@zip.js/zip.js 2.8.28 → 2.8.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/BENCHMARKS.md +203 -0
- package/deno.json +1 -1
- package/dist/zip-core.js +590 -53
- package/dist/zip-core.min.js +1 -1
- package/dist/zip-fs-core.js +476 -53
- package/dist/zip-fs-core.min.js +1 -1
- package/dist/zip-fs-native.js +652 -57
- package/dist/zip-fs-native.min.js +1 -1
- package/dist/zip-fs.js +655 -55
- package/dist/zip-fs.min.js +1 -1
- package/dist/zip-legacy.js +591 -54
- package/dist/zip-legacy.min.js +1 -1
- package/dist/zip-module.wasm +0 -0
- package/dist/zip-native.js +594 -57
- package/dist/zip-native.min.js +1 -1
- package/dist/zip-web-worker-native.js +1 -1
- package/dist/zip-web-worker.js +1 -1
- package/dist/zip.js +597 -55
- package/dist/zip.min.js +1 -1
- package/index-native.cjs +652 -57
- package/index-native.min.js +1 -1
- package/index.cjs +655 -55
- package/index.d.ts +126 -1
- package/index.min.js +1 -1
- package/lib/core/codec-worker.js +10 -1
- package/lib/core/options.js +11 -1
- package/lib/core/streams/codecs/crc32.js +39 -11
- package/lib/core/streams/zip-entry-stream.js +139 -9
- package/lib/core/streams/zlib-js/zlib-streams.min.js +1 -1
- package/lib/core/streams/zlib-wasm/zlib-streams.js +6 -1
- package/lib/core/streams/zlib-wasm/zlib-streams.wasm +0 -0
- package/lib/core/util/opfs-temp-stream.js +175 -0
- package/lib/core/web-worker-inline-native.js +1 -1
- package/lib/core/web-worker-inline-wasm.js +1 -1
- package/lib/core/zip-fs.js +58 -0
- package/lib/core/zip-reader.js +219 -31
- package/lib/core/zip-writer.js +11 -0
- package/lib/core/zlib-streams-inline.js +1 -1
- package/lib/zip-core-base.js +4 -1
- package/package.json +1 -1
package/dist/zip-legacy.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
((A,e)=>{"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((A="undefined"!=typeof globalThis?globalThis:A||self).zip={})})(this,function(A){"use strict";const{Array:e,Object:t,String:g,Number:i,BigInt:s,Math:r,Date:a,Map:o,Set:n,Response:B,URL:c,Error:I,Uint8Array:E,Uint16Array:l,Uint32Array:w,DataView:C,Blob:d,Promise:h,TextEncoder:u,TextDecoder:F,document:Q,crypto:D,btoa:Y,TransformStream:p,ReadableStream:m,WritableStream:f,CompressionStream:y,DecompressionStream:S,navigator:b,Worker:M}="undefined"!=typeof globalThis?globalThis:this||self;var G=void 0!==Q?Q.currentScript:null;const U=4294967295,W=65535,O=255,R=67324752,K=134695760,z=K,T=33639248,x=101010256,N=101075792,H=117853008,L=22,k=21589,J=2048,P=16384,V=2048,Z=1024,X="/",q=30,j=new a(2107,11,31),v=new a(1980,0,1),_=void 0,$=1/0,AA="undefined",eA="function";let tA=2;try{typeof b!=AA&&b.hardwareConcurrency&&(tA=b.hardwareConcurrency)}catch{}const gA={workerURI:"./core/web-worker-wasm.js",wasmURI:"./core/streams/zlib-wasm/zlib-streams.wasm",chunkSize:65536,maxWorkers:tA,terminateWorkerTimeout:5e3,workerStarvationTimeout:5e3,useWebWorkers:!0,useCompressionStream:!0,CompressionStream:typeof y!=AA&&y,DecompressionStream:typeof S!=AA&&S},iA=t.assign({},gA);function sA(){return iA}function rA(A){return r.max(A.chunkSize,64)}function aA(A){const{baseURI:e,chunkSize:t,maxWorkers:g,terminateWorkerTimeout:i,workerStarvationTimeout:s,useCompressionStream:r,useWebWorkers:a,CompressionStream:o,DecompressionStream:n,CompressionStreamZlib:B,DecompressionStreamZlib:c,workerURI:I,wasmURI:E}=A;oA("baseURI",e),oA("wasmURI",E),oA("workerURI",I),oA("chunkSize",t),oA("maxWorkers",g),oA("terminateWorkerTimeout",i),oA("workerStarvationTimeout",s),oA("useCompressionStream",r),oA("useWebWorkers",a),oA("CompressionStream",o),oA("DecompressionStream",n),oA("CompressionStreamZlib",B),oA("DecompressionStreamZlib",c)}function oA(A,e){e!==_&&(iA[A]=e)}const nA="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",BA=[];for(let A=0;256>A;A++){let e=A;for(let A=0;8>A;A++)1&e?e=e>>>1^3988292384:e>>>=1;BA[A]=e}class cA{constructor(A){this.crc=A||-1}append(A){let e=0|this.crc;for(let t=0,g=0|A.length;g>t;t++)e=e>>>8^BA[255&(e^A[t])];this.crc=e}get(){return~this.crc}}class IA extends p{constructor(){let A;const e=new cA;super({transform(A,t){e.append(A),t.enqueue(A)},flush(){const t=new E(4);new C(t.buffer).setUint32(0,e.get()),A.value=t}}),A=this}}function EA(A){if(typeof u==AA){const e=new E((A=unescape(encodeURIComponent(A))).length);for(let t=0;t<e.length;t++)e[t]=A.charCodeAt(t);return e}return(new u).encode(A)}const lA={concat(A,e){if(0===A.length||0===e.length)return A.concat(e);const t=A[A.length-1],g=lA.getPartial(t);return 32===g?A.concat(e):lA._shiftRight(e,g,0|t,A.slice(0,A.length-1))},bitLength(A){const e=A.length;if(0===e)return 0;const t=A[e-1];return 32*(e-1)+lA.getPartial(t)},clamp(A,e){if(32*A.length<e)return A;const t=(A=A.slice(0,r.ceil(e/32))).length;return e&=31,t>0&&e&&(A[t-1]=lA.partial(e,A[t-1]&2147483648>>e-1,1)),A},partial:(A,e,t)=>32===A?e:(t?0|e:e<<32-A)+1099511627776*A,getPartial:A=>r.round(A/1099511627776)||32,_shiftRight(A,e,t,g){for(void 0===g&&(g=[]);e>=32;e-=32)g.push(t),t=0;if(0===e)return g.concat(A);for(let i=0;i<A.length;i++)g.push(t|A[i]>>>e),t=A[i]<<32-e;const i=A.length?A[A.length-1]:0,s=lA.getPartial(i);return g.push(lA.partial(e+s&31,e+s>32?t:g.pop(),1)),g}},wA={bytes:{fromBits(A){const e=lA.bitLength(A)/8,t=new E(e);let g;for(let i=0;e>i;i++)3&i||(g=A[i/4]),t[i]=g>>>24,g<<=8;return t},toBits(A){const e=[];let t,g=0;for(t=0;t<A.length;t++)g=g<<8|A[t],3&~t||(e.push(g),g=0);return 3&t&&e.push(lA.partial(8*(3&t),g)),e}}},CA=class{constructor(A){const e=this;e.blockSize=512,e._init=[1732584193,4023233417,2562383102,271733878,3285377520],e._key=[1518500249,1859775393,2400959708,3395469782],A?(e._h=A._h.slice(0),e._buffer=A._buffer.slice(0),e._length=A._length):e.reset()}reset(){const A=this;return A._h=A._init.slice(0),A._buffer=[],A._length=0,A}update(A){const e=this;"string"==typeof A&&(A=wA.utf8String.toBits(A));const t=e._buffer=lA.concat(e._buffer,A),g=e._length,i=e._length=g+lA.bitLength(A);if(i>9007199254740991)throw new I("Cannot hash more than 2^53 - 1 bits");const s=new w(t);let r=0;for(let A=e.blockSize+g-(e.blockSize+g&e.blockSize-1);i>=A;A+=e.blockSize)e._block(s.subarray(16*r,16*(r+1))),r+=1;return t.splice(0,16*r),e}finalize(){const A=this;let e=A._buffer;const t=A._h;e=lA.concat(e,[lA.partial(1,1)]);for(let A=e.length+2;15&A;A++)e.push(0);for(e.push(r.floor(A._length/4294967296)),e.push(0|A._length);e.length;)A._block(e.splice(0,16));return A.reset(),t}_f(A,e,t,g){return A>19?A>39?A>59?A>79?void 0:e^t^g:e&t|e&g|t&g:e^t^g:e&t|~e&g}_S(A,e){return e<<A|e>>>32-A}_block(A){const t=this,g=t._h,i=e(80);for(let e=0;16>e;e++)i[e]=A[e];let s=g[0],a=g[1],o=g[2],n=g[3],B=g[4];for(let A=0;79>=A;A++){16>A||(i[A]=t._S(1,i[A-3]^i[A-8]^i[A-14]^i[A-16]));const e=t._S(5,s)+t._f(A,a,o,n)+B+i[A]+t._key[r.floor(A/20)]|0;B=n,n=o,o=t._S(30,a),a=s,s=e}g[0]=g[0]+s|0,g[1]=g[1]+a|0,g[2]=g[2]+o|0,g[3]=g[3]+n|0,g[4]=g[4]+B|0}},dA={importKey:A=>new dA.hmacSha1(wA.bytes.toBits(A)),pbkdf2(A,e,t,g){if(t=t||1e4,0>g||0>t)throw new I("invalid params to pbkdf2");const i=1+(g>>5)<<2;let s,r,a,o,n;const B=new ArrayBuffer(i),c=new C(B);let E=0;const l=lA;for(e=wA.bytes.toBits(e),n=1;(i||1)>E;n++){for(s=r=A.encrypt(l.concat(e,[n])),a=1;t>a;a++)for(r=A.encrypt(r),o=0;o<r.length;o++)s[o]^=r[o];for(a=0;(i||1)>E&&a<s.length;a++)c.setInt32(E,s[a]),E+=4}return B.slice(0,g/8)},hmacSha1:class{constructor(A){const e=this,t=e._hash=CA,g=[[],[]];e._baseHash=[new t,new t];const i=e._baseHash[0].blockSize/32;A.length>i&&(A=(new t).update(A).finalize());for(let e=0;i>e;e++)g[0][e]=909522486^A[e],g[1][e]=1549556828^A[e];e._baseHash[0].update(g[0]),e._baseHash[1].update(g[1]),e._resultHash=new t(e._baseHash[0])}reset(){const A=this;A._resultHash=new A._hash(A._baseHash[0]),A._updated=!1}update(A){this._updated=!0,this._resultHash.update(A)}digest(){const A=this,e=A._resultHash.finalize(),t=new A._hash(A._baseHash[1]).update(e).finalize();return A.reset(),t}encrypt(A){if(this._updated)throw new I("encrypt on already updated hmac called!");return this.update(A),this.digest(A)}}},hA=typeof D!=AA&&typeof D.getRandomValues==eA,uA="Invalid password",FA="Invalid signature",QA="zipjs-abort-check-password";function DA(A){if(hA)return D.getRandomValues(A);throw new I("Crypto API not supported")}const YA=16,pA={name:"PBKDF2"},mA=t.assign({hash:{name:"HMAC"}},pA),fA=t.assign({iterations:1e3,hash:{name:"SHA-1"}},pA),yA=["deriveBits"],SA=[8,12,16],bA=[16,24,32],MA=10,GA=[0,0,0,0],UA=typeof D!=AA,WA=UA&&D.subtle,OA=UA&&typeof WA!=AA,RA=wA.bytes,KA=class{constructor(A){const e=this;e._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],e._tables[0][0][0]||e._precompute();const t=e._tables[0][4],g=e._tables[1],i=A.length;let s,r,a,o=1;if(4!==i&&6!==i&&8!==i)throw new I("invalid aes key size");for(e._key=[r=A.slice(0),a=[]],s=i;4*i+28>s;s++){let A=r[s-1];(s%i===0||8===i&&s%i===4)&&(A=t[A>>>24]<<24^t[A>>16&255]<<16^t[A>>8&255]<<8^t[255&A],s%i===0&&(A=A<<8^A>>>24^o<<24,o=o<<1^283*(o>>7))),r[s]=r[s-i]^A}for(let A=0;s;A++,s--){const e=r[3&A?s:s-4];a[A]=4>=s||4>A?e:g[0][t[e>>>24]]^g[1][t[e>>16&255]]^g[2][t[e>>8&255]]^g[3][t[255&e]]}}encrypt(A){return this._crypt(A,0)}decrypt(A){return this._crypt(A,1)}_precompute(){const A=this._tables[0],e=this._tables[1],t=A[4],g=e[4],i=[],s=[];let r,a,o,n;for(let A=0;256>A;A++)s[(i[A]=A<<1^283*(A>>7))^A]=A;for(let B=r=0;!t[B];B^=a||1,r=s[r]||1){let s=r^r<<1^r<<2^r<<3^r<<4;s=s>>8^255&s^99,t[B]=s,g[s]=B,n=i[o=i[a=i[B]]];let c=16843009*n^65537*o^257*a^16843008*B,I=257*i[s]^16843008*s;for(let t=0;4>t;t++)A[t][B]=I=I<<24^I>>>8,e[t][s]=c=c<<24^c>>>8}for(let t=0;5>t;t++)A[t]=A[t].slice(0),e[t]=e[t].slice(0)}_crypt(A,e){if(4!==A.length)throw new I("invalid aes block size");const t=this._key[e],g=t.length/4-2,i=[0,0,0,0],s=this._tables[e],r=s[0],a=s[1],o=s[2],n=s[3],B=s[4];let c,E,l,w=A[0]^t[0],C=A[e?3:1]^t[1],d=A[2]^t[2],h=A[e?1:3]^t[3],u=4;for(let A=0;g>A;A++)c=r[w>>>24]^a[C>>16&255]^o[d>>8&255]^n[255&h]^t[u],E=r[C>>>24]^a[d>>16&255]^o[h>>8&255]^n[255&w]^t[u+1],l=r[d>>>24]^a[h>>16&255]^o[w>>8&255]^n[255&C]^t[u+2],h=r[h>>>24]^a[w>>16&255]^o[C>>8&255]^n[255&d]^t[u+3],u+=4,w=c,C=E,d=l;for(let A=0;4>A;A++)i[e?3&-A:A]=B[w>>>24]<<24^B[C>>16&255]<<16^B[d>>8&255]<<8^B[255&h]^t[u++],c=w,w=C,C=d,d=h,h=c;return i}},zA=class{constructor(A,e){this._prf=A,this._initIv=e,this._iv=e}reset(){this._iv=this._initIv}update(A){return this.calculate(this._prf,A,this._iv)}incWord(A){if(255&~(A>>24))A+=1<<24;else{let e=A>>16&255,t=A>>8&255,g=255&A;255===e?(e=0,255===t?(t=0,255===g?g=0:++g):++t):++e,A=0,A+=e<<16,A+=t<<8,A+=g}return A}incCounter(A){0===(A[0]=this.incWord(A[0]))&&(A[1]=this.incWord(A[1]))}calculate(A,e,t){let g;if(!(g=e.length))return[];const i=lA.bitLength(e);for(let i=0;g>i;i+=4){this.incCounter(t);const g=A.encrypt(t);e[i]^=g[0],e[i+1]^=g[1],e[i+2]^=g[2],e[i+3]^=g[3]}return lA.clamp(e,i)}},TA=dA.hmacSha1;let xA=UA&&OA&&typeof WA.importKey==eA,NA=UA&&OA&&typeof WA.deriveBits==eA;class HA extends p{constructor({password:A,rawPassword:e,encryptionStrength:g,checkPasswordOnly:i}){super({start(){t.assign(this,{ready:new h(A=>this.resolveReady=A),password:PA(A,e),strength:g-1,pending:new E})},async transform(A,e){const t=this,{password:g,strength:s,resolveReady:r,ready:a}=t;g?(await(async(A,e,t,g)=>{const i=await JA(A,e,t,ZA(g,0,SA[e])),s=ZA(g,SA[e]);if(i[0]!=s[0]||i[1]!=s[1])throw new I(uA)})(t,s,g,ZA(A,0,SA[s]+2)),A=ZA(A,SA[s]+2),i?e.error(new I(QA)):r()):await a;const o=new E(A.length-MA-(A.length-MA)%YA);e.enqueue(kA(t,A,o,0,MA,!0))},async flush(A){const{ctr:e,hmac:t,pending:g,ready:i}=this;if(t&&e){await i;const s=ZA(g,0,g.length-MA),r=ZA(g,g.length-MA);let a=new E;if(s.length){const A=qA(RA,s);t.update(A);const g=e.update(A);a=XA(RA,g)}const o=ZA(XA(RA,t.digest()),0,MA);let n=g.length<MA?1:0;for(let A=0;MA>A;A++)n|=o[A]^r[A];if(n)throw new I(FA);A.enqueue(a)}}})}}class LA extends p{constructor({password:A,rawPassword:e,encryptionStrength:g}){let i;super({start(){t.assign(this,{ready:new h(A=>this.resolveReady=A),password:PA(A,e),strength:g-1,pending:new E})},async transform(A,e){const t=this,{password:g,strength:i,resolveReady:s,ready:r}=t;let a=new E;g?(a=await(async(A,e,t)=>{const g=DA(new E(SA[e]));return VA(g,await JA(A,e,t,g))})(t,i,g),s()):await r;const o=new E(a.length+A.length-A.length%YA);o.set(a,0),e.enqueue(kA(t,A,o,a.length,0))},async flush(A){const{ctr:e,hmac:t,pending:g,ready:s}=this;if(t&&e){await s;let r=new E;if(g.length){const A=e.update(qA(RA,g));t.update(A),r=XA(RA,A)}i.signature=XA(RA,t.digest()).slice(0,MA),A.enqueue(VA(r,i.signature))}}}),i=this}}function kA(A,e,t,g,i,s){const{ctr:r,hmac:a,pending:o}=A;o.length&&(e=VA(o,e));const n=e.length-i;let B;for(t=((A,e)=>{if(e&&e>A.length){const t=A;(A=new E(e)).set(t,0)}return A})(t,g+(n-n%YA)),B=0;n-YA>=B;B+=YA){const A=qA(RA,ZA(e,B,B+YA));s&&a.update(A);const i=r.update(A);s||a.update(i),t.set(XA(RA,i),B+g)}return A.pending=ZA(e,B),t}async function JA(A,g,i,s){A.password=null;const r=await(async(A,e,t,g,i)=>{if(!xA)return dA.importKey(e);try{return await WA.importKey("raw",e,t,!1,i)}catch{return xA=!1,dA.importKey(e)}})(0,i,mA,0,yA),a=await(async(A,e,t)=>{if(!NA)return dA.pbkdf2(e,A.salt,fA.iterations,t);try{return await WA.deriveBits(A,e,t)}catch{return NA=!1,dA.pbkdf2(e,A.salt,fA.iterations,t)}})(t.assign({salt:s},fA),r,8*(2*bA[g]+2)),o=new E(a),n=qA(RA,ZA(o,0,bA[g])),B=qA(RA,ZA(o,bA[g],2*bA[g])),c=ZA(o,2*bA[g]);return t.assign(A,{keys:{key:n,authentication:B,passwordVerification:c},ctr:new zA(new KA(n),e.from(GA)),hmac:new TA(B)}),c}function PA(A,e){return e===_?EA(A):e}function VA(A,e){let t=A;return A.length+e.length&&(t=new E(A.length+e.length),t.set(A,0),t.set(e,A.length)),t}function ZA(A,e,t){return A.subarray(e,t)}function XA(A,e){return A.fromBits(e)}function qA(A,e){return A.toBits(e)}class jA extends p{constructor({password:A,rawPassword:e,passwordVerification:g,checkPasswordOnly:i}){super({start(){t.assign(this,{password:A,rawPassword:e,passwordVerification:g}),Ae(this,A,e)},transform(A,e){const t=this;if(t.password||t.rawPassword){const e=_A(t,A.subarray(0,12));if(t.password=t.rawPassword=null,0!=(e.at(-1)^t.passwordVerification))throw new I(uA);A=A.subarray(12)}i?e.error(new I(QA)):e.enqueue(_A(t,A))}})}}class vA extends p{constructor({password:A,rawPassword:e,passwordVerification:g}){super({start(){t.assign(this,{password:A,rawPassword:e,passwordVerification:g}),Ae(this,A,e)},transform(A,e){const t=this;let g,i;if(t.password||t.rawPassword){t.password=t.rawPassword=null;const e=DA(new E(12));e[11]=t.passwordVerification,g=new E(A.length+e.length),g.set($A(t,e),0),i=12}else g=new E(A.length),i=0;g.set($A(t,A),i),e.enqueue(g)}})}}function _A(A,e){const t=new E(e.length);for(let g=0;g<e.length;g++)t[g]=te(A)^e[g],ee(A,t[g]);return t}function $A(A,e){const t=new E(e.length);for(let g=0;g<e.length;g++)t[g]=te(A)^e[g],ee(A,e[g]);return t}function Ae(A,e,g){const i=[305419896,591751049,878082192];if(t.assign(A,{keys:i,crcKey0:new cA(i[0]),crcKey2:new cA(i[2])}),g)for(let e=0;e<g.length;e++)ee(A,g[e]);else for(let t=0;t<e.length;t++)ee(A,e.charCodeAt(t))}function ee(A,e){let[,t]=A.keys;A.crcKey0.append([e]);const g=~A.crcKey0.get();t=ie(r.imul(ie(t+ge(g)),134775813)+1),A.crcKey2.append([t>>>24]);const i=~A.crcKey2.get();A.keys=[g,t,i]}function te(A){const e=2|A.keys[2];return ge(r.imul(e,1^e)>>>8)}function ge(A){return 255&A}function ie(A){return 4294967295&A}const se="Invalid uncompressed size",re="Invalid compressed data";class ae extends p{constructor(A,{chunkSize:e,CompressionStreamZlib:t,CompressionStream:g}){super({});const{compressed:i,encrypted:s,useCompressionStream:r,zipCrypto:a,signed:o,level:n}=A,B=this;let c,I,E=super.readable;s&&!a||!o||(c=new IA,E=ce(E,c)),i&&(E=Be(E,r,{level:n,chunkSize:e},g,t,g)),s&&(a?E=ce(E,new vA(A)):(I=new LA(A),E=ce(E,I))),ne(B,E,()=>{let A;s&&!a&&(A=I.signature),s&&!a||!o||(A=new C(c.value.buffer).getUint32(0)),B.signature=A})}}class oe extends p{constructor(A,{chunkSize:e,DecompressionStreamZlib:t,DecompressionStream:g}){super({});const{zipCrypto:i,encrypted:s,signed:r,signature:a,compressed:o,useCompressionStream:n,deflate64:B}=A;let c,E,l=super.readable;s&&(i?l=ce(l,new jA(A)):(E=new HA(A),l=ce(l,E))),o&&(l=Be(l,n,{chunkSize:e,deflate64:B},g,t,g),l=(A=>{const e=A.getReader();return new m({async pull(A){let t;try{t=await e.read()}catch(A){if(A&&A.message)throw A;const e=new I(re);throw e.cause=A,e}const{value:g,done:i}=t;i?A.close():A.enqueue(g)},cancel:A=>e.cancel(A)})})(l)),s&&!i||!r||(c=new IA,l=ce(l,c)),ne(this,l,()=>{if((!s||i)&&r){const A=new C(c.value.buffer);if(a!=A.getUint32(0,!1))throw new I(FA)}})}}function ne(A,e,g){e=ce(e,new p({flush:g})),t.defineProperty(A,"readable",{get:()=>e})}function Be(A,e,t,g,i,s){const r=e&&g?g:i||s,a=t.deflate64?"deflate64-raw":"deflate-raw";try{A=ce(A,new r(a,t))}catch(g){if(!e)throw g;if(i)A=ce(A,new i(a,t));else{if(!s)throw g;A=ce(A,new s(a,t))}}return A}function ce(A,e){return A.pipeThrough(e)}const Ie="data",Ee="deflate",le="inflate";class we extends p{constructor(A,e){super({});const g=this,{codecType:i}=A;let s;i.startsWith(Ee)?s=ae:i.startsWith(le)&&(s=oe),g.outputSize=0;let r=0;const a=new s(A,e),o=super.readable,n=new p({transform(A,e){A&&A.length&&(r+=A.length,e.enqueue(A))},flush(){t.assign(g,{inputSize:r})}}),B=new p({transform(e,t){if(e&&e.length&&(t.enqueue(e),g.outputSize+=e.length,A.outputSize!==_&&g.outputSize>A.outputSize))throw new I(se)},flush(){const{signature:A}=a;t.assign(g,{signature:A,inputSize:r})}});t.defineProperty(g,"readable",{get:()=>o.pipeThrough(n).pipeThrough(a).pipeThrough(B)})}}class Ce extends p{constructor(A){let e;1>A&&(A=65536),super({transform:(t,g)=>{if(e){const A=new E(e.length+t.length);A.set(e),A.set(t,e.length),t=A,e=null}let i=0;for(;t.length-i>A;)g.enqueue(t.slice(i,i+A)),i+=A;e=i?t.slice(i):t},flush(A){e&&e.length&&A.enqueue(e)}})}}const de={type:"module"},he="error";let ue,Fe,Qe,De,Ye=!0;try{Ye=typeof structuredClone==eA&&structuredClone(new DOMException("","AbortError")).code!==_}catch{}class pe{constructor(A,{readable:e,writable:g},{options:i,config:s,streamOptions:r,useWebWorkers:a,transferStreams:o,workerURI:n},B){const{signal:c}=r;return t.assign(A,{busy:!0,generation:(A.generation||0)+1,readable:e.pipeThrough(new Ce(rA(s))).pipeThrough(new me(r),{signal:c}),writable:g,options:t.assign({},i),workerURI:n,transferStreams:o,terminate:()=>new h(e=>{const{worker:t,busy:g}=A;t?(g?A.resolveTerminated=e:(t.terminate(),e()),A.interface=null):e()}),onTaskFinished(){if(A.busy){const{resolveTerminated:e}=A;e&&(A.resolveTerminated=null,A.terminated=!0,A.worker.terminate(),e()),A.busy=!1,B(A)}}}),ue===_&&(ue=typeof M!=AA),(a&&ue?Se:ye)(A,s)}}class me extends p{constructor({onstart:A,onprogress:e,size:t,onend:g}){let i=0;super({async start(){A&&await fe(A,t)},async transform(A,g){i+=A.length,e&&await fe(e,i,t),g.enqueue(A)},async flush(){g&&await fe(g,i)}})}}async function fe(A,...e){try{await A(...e)}catch{}}function ye(A,e){return{run:()=>(async({options:A,readable:e,writable:t,onTaskFinished:g},i)=>{let s;try{if(!A.useCompressionStream)try{await void 0}catch{A.useCompressionStream=!0}s=new we(A,i),await e.pipeThrough(s).pipeTo(t,{preventClose:!0,preventAbort:!0});const{signature:g,inputSize:r,outputSize:a}=s;return{signature:g,inputSize:r,outputSize:a}}catch(A){throw s&&(A.outputSize=s.outputSize),A}finally{g()}})(A,e)}}function Se(A,e){const{baseURI:g,chunkSize:i}=e;let{wasmURI:s}=e;if(!A.interface){let r;typeof s==eA&&(s=s());try{r=Me(A.workerURI,g,A)}catch{return ue=!1,ye(A,e)}t.assign(A,{worker:r,terminated:!1,interface:{run:()=>(async(A,e)=>{let g,i;const s=new h((A,e)=>{g=A,i=e});t.assign(A,{reader:null,writer:null,resolveResult:g,rejectResult:i,result:s});const{readable:r,options:a}=A,{writable:o,closed:n,abortPipe:B}=(A=>{const e=new AbortController,{writable:t,readable:g}=new p,i=g.pipeTo(A,{preventClose:!0,preventAbort:!0,signal:e.signal});return i.catch(()=>{}),{writable:t,closed:i,abortPipe:()=>e.abort()}})(A.writable);let c;try{c=Ue({type:"start",options:a,config:e,readable:r,writable:o},A)}catch(e){B();try{await n}catch{}throw A.onTaskFinished(),e}c||t.assign(A,{reader:r.getReader(),writer:o.getWriter()});try{const A=await s;return await I(),await n,A}catch(A){await I(),B();try{await n}catch{}throw A}async function I(){if(!c&&!o.locked)try{await o.getWriter().close()}catch{}}})(A,{chunkSize:i,wasmURI:s,baseURI:g})}})}return A.interface}function be(A){const{worker:e}=A;if(e)try{e.terminate()}catch{}A.interface=null}function Me(A,e,g,i,s=!0){let r,a,o;if(Qe===_||Fe!==A){const t=typeof A==eA;a=t?A(s):A;const n=a.startsWith("data:"),B=a.startsWith("blob:");if(n||B){i===_&&(i=!1),i&&(o=de);try{r=new M(a,o)}catch(s){if(B)try{c.revokeObjectURL(a)}catch{}if(t&&B)return Me(A,e,g,i,!1);if(i)throw s;return Me(A,e,g,!0,!1)}}else{i===_&&(i=!0),i&&(o=de);try{a=new c(a,e)}catch{}try{r=new M(a,o)}catch(t){if(i)throw t;return Me(A,e,g,!1,s)}}Fe=A,Qe=a,De=o}else r=new M(Qe,De);return r.addEventListener("message",A=>(async({data:A},e)=>{const{type:g,value:i,messageId:s,result:r,error:a}=A,{reader:o,writer:n,resolveResult:B,rejectResult:c,onTaskFinished:l,generation:w}=e,C=()=>e.generation!=w;try{if(a){const{message:A,stack:e,code:g,name:i,outputSize:s}=a,r=new I(A);t.assign(r,{stack:e,code:g,name:i,outputSize:s}),d(r)}else{if("pull"==g){const{value:A,done:t}=await o.read();C()||Ue({type:Ie,value:A,done:t,messageId:s},e)}g==Ie&&(await n.ready,await n.write(new E(i)),C()||Ue({type:"ack",messageId:s},e)),"close"==g&&d(null,r)}}catch(a){C()||(be(e),d(a))}function d(A,e){C()||(A?c(A):B(e),n&&n.releaseLock(),l())}})(A,g)),r.addEventListener(he,A=>Ge(A,g)),r.addEventListener("messageerror",A=>Ge(A,g)),r}function Ge(A,e){A.preventDefault&&A.preventDefault();const{rejectResult:t,writer:g,onTaskFinished:i}=e;be(e),t&&(t(A.error||new I(A.message||he)),g&&g.releaseLock(),i())}function Ue(A,{worker:e,writer:t,transferStreams:g}){try{const{value:t,readable:i,writable:s}=A,r=[];if(t&&(A.value=t,r.push(A.value.buffer)),g&&Ye?(i&&r.push(i),s&&r.push(s)):A.readable=A.writable=null,r.length)try{return e.postMessage(A,r),!0}catch{Ye=!1,A.readable=A.writable=null,e.postMessage(A)}else e.postMessage(A)}catch(A){throw t&&t.releaseLock(),A}}let We=[];const Oe=[];let Re,Ke,ze=0;async function Te(A,e){const{options:t,config:g}=e,{transferStreams:s,useWebWorkers:r,useCompressionStream:a,compressed:o,signed:n,encrypted:B}=t,{workerURI:c,maxWorkers:I}=g;e.transferStreams=s||s===_;const E=!(o||n||B||e.transferStreams);return e.useWebWorkers=!E&&(r||r===_&&g.useWebWorkers),e.workerURI=e.useWebWorkers&&c?c:_,t.useCompressionStream=a||a===_&&g.useCompressionStream,(await(async()=>{const t=We.find(A=>!A.busy);if(t)return ke(t),new pe(t,A,e,l);if(We.length<I){const t={indexWorker:ze};return ze++,We.push(t),new pe(t,A,e,l)}return new h(t=>{Oe.push({resolve:t,stream:A,workerOptions:e}),Ke=g.workerStarvationTimeout,xe()})})()).run();function l(A){if(Ne(),Oe.length){const[{resolve:e,stream:t,workerOptions:g}]=Oe.splice(0,1);e(new pe(A,t,g,l)),xe()}else A.worker?(ke(A),((A,e)=>{const{config:t}=e,{terminateWorkerTimeout:g}=t;i.isFinite(g)&&g>=0&&(A.terminated?A.terminated=!1:A.terminateTimeout=setTimeout(async()=>{We=We.filter(e=>e!=A);try{await A.terminate()}catch{}},g))})(A,e)):We=We.filter(e=>e!=A)}}function xe(){!Re&&Oe.length&&i.isFinite(Ke)&&Ke>=0&&(Re=setTimeout(He,Ke))}function Ne(){Re&&(clearTimeout(Re),Re=null)}function He(){if(Re=null,Oe.length){const[{resolve:A,stream:e,workerOptions:g}]=Oe.splice(0,1),i=t.assign({},g,{useWebWorkers:!1,workerURI:_});A(new pe({},e,i,Le)),xe()}}function Le(){Ne(),xe()}function ke(A){const{terminateTimeout:e}=A;e&&(clearTimeout(e),A.terminateTimeout=null)}const Je="HTTP error ",Pe="HTTP Range not supported",Ve="Content-Range",Ze="Range",Xe="GET",qe="bytes",je=65536,ve="writable";class _e{constructor(){this.size=0}init(){this.initialized=!0}}class $e extends _e{get readable(){const A=this,{chunkSize:e=je}=A,t=new m({start(){this.chunkOffset=0},async pull(g){const{offset:i=0,size:s,diskNumberStart:a}=t,{chunkOffset:o}=this,n=s===_?e:r.min(e,s-o),B=await Dt(A,i+o,n,a);g.enqueue(B),o+e>s||s===_&&!B.length&&n?g.close():this.chunkOffset+=e}});return t}}class At extends _e{constructor(){super();const A=this,e=new f({write(e){if(!A.initialized)throw new I("Writer not initialized");return A.writeUint8Array(e)}});t.defineProperty(A,ve,{get:()=>e})}writeUint8Array(){}}class et extends $e{constructor(A){super(),t.assign(this,{blob:A,size:A.size})}async readUint8Array(A,e){const t=this,g=A+e,i=A||g<t.size?t.blob.slice(A,g):t.blob;let s=await i.arrayBuffer();return s.byteLength>e&&(s=s.slice(A,g)),new E(s)}}class tt extends _e{constructor(A){super();const e=this,g=new p,i=[];A&&i.push(["Content-Type",A]),t.defineProperty(e,ve,{get:()=>g.writable}),e.blob=new B(g.readable,{headers:i}).blob(),e.blob.catch(()=>{})}getData(){return this.blob}}class gt extends $e{constructor(A,e){super(),st(this,A,e)}async init(){await rt(this,lt,Bt),super.init()}readUint8Array(A,e){return at(this,A,e,lt,Bt)}}class it extends $e{constructor(A,e){super(),st(this,A,e)}async init(){await rt(this,wt,ct),super.init()}readUint8Array(A,e){return at(this,A,e,wt,ct)}}function st(A,e,g){const{preventHeadRequest:i,useRangeHeader:s,forceRangeRequests:r,combineSizeEocd:a,fetch:o}=g;delete(g=t.assign({},g)).preventHeadRequest,delete g.useRangeHeader,delete g.forceRangeRequests,delete g.combineSizeEocd,delete g.useXHR,delete g.fetch,t.assign(A,{url:e,options:g,preventHeadRequest:i,useRangeHeader:s,forceRangeRequests:r,combineSizeEocd:a,fetch:o})}async function rt(A,e,t){const{url:g,preventHeadRequest:s,useRangeHeader:r,forceRangeRequests:a,combineSizeEocd:o}=A;if((A=>{const{baseURI:e}=sA(),{protocol:t}=new c(A,e);return"http:"==t||"https:"==t})(g)&&(r||a)&&(void 0===s||s)){const g=await e(Xe,A,ot(A,o?-22:void 0)),s=g.headers.get("Accept-Ranges");if(!(a||s&&s.toLowerCase()==qe))throw new I(Pe);{if(o){const e=new E(await g.arrayBuffer());206==g.status&&e.length==L&&(A.eocdCache=e)}let s;const r=g.headers.get(Ve);if(r){const A=r.trim().split(/\s*\/\s*/);if(A.length){const e=A[1];e&&"*"!=e&&(s=i(e))}}s===_?await Et(A,e,t):A.size=s}}else await Et(A,e,t)}async function at(A,e,t,g,s){const{useRangeHeader:r,forceRangeRequests:a,eocdCache:o,size:n,options:B}=A;if(r||a){if(o&&e==n-L&&t==L)return o;if(n>e&&0!==t){e+t>n&&(t=n-e);const s=await g(Xe,A,ot(A,e,t));if(206!=s.status)throw new I(Pe);const r=s.headers.get(Ve);if(r){const A=i(r.trim().split(/[\s-]+/)[1]);if(!i.isNaN(A)&&A!=e)throw new I(Pe)}const a=new E(await s.arrayBuffer());if(a.length!=t)throw new I(Pe);return a}return new E}{const{data:g}=A;return g||await s(A,B),new E(A.data.subarray(e,e+t))}}function ot(A,e=0,g=1){return t.assign({},nt(A),{[Ze]:qe+"="+(0>e?e:e+"-"+(e+g-1))})}function nt({options:A}){const{headers:e}=A;if(e)return Symbol.iterator in e?t.fromEntries(e):e}async function Bt(A){await It(A,lt)}async function ct(A){await It(A,wt)}async function It(A,e){const t=await e(Xe,A,nt(A));A.data=new E(await t.arrayBuffer()),A.size=A.data.length}async function Et(A,e,t){if(A.preventHeadRequest)await t(A,A.options);else{const g=await e("HEAD",A,nt(A)),s=g.headers.get("Content-Length");s&&!g.headers.get("Content-Encoding")?A.size=i(s):await t(A,A.options)}}async function lt(A,{fetch:e=fetch,options:g,url:i},s){const r=await e(i,t.assign({},g,{method:A,headers:s}));if(400>r.status)return r;throw 416==r.status?new I(Pe):new I(Je+(r.statusText||r.status))}function wt(A,{url:e},g){return new h((i,s)=>{const r=new XMLHttpRequest;if(r.addEventListener("load",()=>{if(400>r.status){const A=[];r.getAllResponseHeaders().trim().split(/[\r\n]+/).forEach(e=>{const t=e.trim().split(/\s*:\s*/);t[0]=t[0].trim().replace(/^[a-z]|-[a-z]/g,A=>A.toUpperCase()),A.push(t)}),i({status:r.status,arrayBuffer:()=>r.response,headers:new o(A)})}else s(416==r.status?new I(Pe):new I(Je+(r.statusText||r.status)))},!1),r.addEventListener("error",A=>s(A.detail?A.detail.error:new I("Network error")),!1),r.open(A,e),g)for(const A of t.entries(g))r.setRequestHeader(A[0],A[1]);r.responseType="arraybuffer",r.send()})}class Ct extends $e{constructor(A,e={}){super(),t.assign(this,{url:A,reader:e.useXHR&&!e.fetch?new it(A,e):new gt(A,e)})}set size(A){}get size(){return this.reader.size}async init(){await this.reader.init(),super.init()}readUint8Array(A,e){return this.reader.readUint8Array(A,e)}}class dt extends $e{constructor(A){super(),this.readers=A}async init(){const A=this,{readers:e}=A;A.lastDiskNumber=0,A.lastDiskOffset=0,await h.all(e.map(async(t,g)=>{await Qt(t),g!=e.length-1&&(A.lastDiskOffset+=t.size),A.size+=t.size})),super.init()}async readUint8Array(A,e,t=0){const g=this,{readers:i}=this;let s,a=t;-1==a&&(a=i.length-1);let o=A;for(;i[a]&&o>=i[a].size;)o-=i[a].size,a++;const n=i[a];if(n){const i=n.size;if(o+e>i){const r=i-o;s=new E(e);const a=await Dt(n,o,r);s.set(a,0);const B=await g.readUint8Array(A+r,e-r,t);s.set(B,r),a.length+B.length<e&&(s=s.subarray(0,a.length+B.length))}else s=await Dt(n,o,e)}else s=new E;return g.lastDiskNumber=r.max(a,g.lastDiskNumber),s}}class ht extends _e{constructor(A,e=4294967295){super();const g=this;let i,s,r;t.assign(g,{diskNumber:0,diskOffset:0,size:0,maxSize:e,availableSize:e});const a=new f({async write(e){const{availableSize:t}=g;if(r)e.length<t?await o(e):(await o(e.subarray(0,t)),await n(),g.diskOffset+=i.size,g.diskNumber++,r=null,g.availableSize=g.maxSize,e.length>t&&await this.write(e.subarray(t)));else{const{value:t,done:a}=await A.next();if(a&&!t)throw new I("Writer iterator completed too soon");i=t,i.size=0,i.maxSize&&(g.maxSize=i.maxSize),g.availableSize=g.maxSize,await Qt(i),s=t.writable,r=s.getWriter(),await this.write(e)}},async close(){r&&(await r.ready,await n())},async abort(A){r&&await r.abort(A)}});async function o(A){const e=A.length;e&&(await r.ready,await r.write(A),i.size+=e,g.availableSize-=e)}async function n(){await r.close()}t.defineProperty(g,ve,{get:()=>a})}}class ut{constructor(A){return e.isArray(A)&&(A=new dt(A)),A instanceof m&&(A={readable:A}),A}}class Ft{constructor(A){return A.writable===_&&typeof A.next==eA&&(A=new ht(A)),A instanceof f&&(A={writable:A}),A.size===_&&(A.size=0),A instanceof ht||t.assign(A,{diskNumber:0,diskOffset:0,availableSize:$,maxSize:$}),A}}async function Qt(A,e){if(!A.init||A.initialized)return h.resolve();await A.init(e)}function Dt(A,e,t,g){return A.readUint8Array(e,t,g)}const Yt="\0☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ".split("");function pt(A,e){return e&&"cp437"==e.trim().toLowerCase()?(A=>{{let e="";for(let t=0;t<A.length;t++)e+=Yt[A[t]];return e}})(A):new F(e,{ignoreBOM:!0}).decode(A)}const mt="filename",ft="rawFilename",yt="comment",St="rawComment",bt="uncompressedSize",Mt="compressedSize",Gt="offset",Ut="diskNumberStart",Wt="lastModDate",Ot="rawLastModDate",Rt="lastAccessDate",Kt="creationDate",zt="rawCreationDate",Tt="internalFileAttributes",xt="externalFileAttributes",Nt="msdosAttributesRaw",Ht="msdosAttributes",Lt="msDosCompatible",kt="zip64",Jt="encrypted",Pt="version",Vt="versionMadeBy",Zt="zipCrypto",Xt="directory",qt="executable",jt="compressionMethod",vt="signature",_t="extraField",$t="unixMode",Ag="setuid",eg="setgid",tg="sticky",gg=[mt,ft,bt,Mt,Wt,Ot,yt,St,Rt,Kt,zt,Gt,Ut,Tt,xt,Nt,Ht,Lt,kt,Jt,Pt,Vt,Zt,Xt,qt,jt,vt,_t,"extraFieldUnix","extraFieldInfoZip","uid","gid",$t,Ag,eg,tg,"bitFlag","filenameUTF8","commentUTF8","rawExtraField","extraFieldZip64","extraFieldUnicodePath","extraFieldUnicodeComment","extraFieldAES","extraFieldNTFS","extraFieldExtendedTimestamp"];class ig{constructor(A){gg.forEach(e=>this[e]=A[e])}}const sg="password",rg="rawPassword",ag="passThrough",og="signal",ng="checkAmbiguity",Bg="useWebWorkers",cg="useCompressionStream",Ig="transferStreams",Eg="preventClose",lg="offset",wg="File format is not recognized",Cg="End of central directory not found",dg="End of Zip64 central directory locator not found",hg="Central directory header not found",ug="Local file header not found",Fg="Zip64 extra field not found",Qg="File contains encrypted entry",Dg="Encryption method not supported",Yg="Compression method not supported",pg="Split zip file",mg="Overlapping entry found",fg="Ambiguous archive",yg="utf-8",Sg="cp437",bg=[[bt,U],[Mt,U],[Gt,U],[Ut,W]],Mg={[W]:{getValue:Jg,bytes:4},[U]:{getValue:Pg,bytes:8}};class Gg{constructor(A,e={}){t.assign(this,{reader:new ut(A),options:e,config:sA(),readRanges:new o})}async*getEntriesGenerator(A={}){const e=this;let{reader:g}=e;const{config:i}=e;if(await Qt(g),g.size!==_&&g.readUint8Array||(g=new et(await new B(g.readable).blob()),await Qt(g)),g.size<L)throw new I(wg);g.chunkSize=rA(i);const s=await(async(A,e,t)=>{const g=new E(4);var i;return i=e,Vg(g).setUint32(0,i,!0),await s(22)||await s(r.min(1048582,t));async function s(e){const i=t-e,s=await Dt(A,i,e);for(let A=s.length-22;A>=0;A--)if(s[A]==g[0]&&s[A+1]==g[1]&&s[A+2]==g[2]&&s[A+3]==g[3])return{offset:i+A,buffer:s.slice(A,A+22).buffer}}})(g,x,g.size);if(!s)throw Jg(Vg(await Dt(g,0,4)))==K?new I(pg):new I(Cg);const a=Vg(s);let o=Jg(a,12),c=Jg(a,16);const l=s.offset,w=kg(a,20),C=l+L+w,d=xg(e,A,ng);d&&C!=g.size&&Tg("appended data");let u=kg(a,4);const F=g.lastDiskNumber||0;let Q,D,Y=kg(a,6),m=kg(a,10),f=0;if(c==U||o==U||m==W||Y==W){const A=20>s.offset?new E:await Dt(g,s.offset-20,20),e=Vg(A);if(20==A.length&&Jg(e,0)==H){c=Pg(e,8);let A=await Dt(g,c,56,-1),t=Vg(A);const i=s.offset-20-56-(g.lastDiskOffset||0);if((56>A.length||Jg(t,0)!=N)&&c!=i&&i>=0){const e=c;c=i,c>e&&(f=c-e),A=await Dt(g,c,56,-1),t=Vg(A)}if(56>A.length||Jg(t,0)!=N)throw new I(dg);D=!0,u==W?u=Jg(t,16):d&&u!=Jg(t,16)&&Tg("mismatched zip64 end of central directory record"),Y==W?Y=Jg(t,20):d&&Y!=Jg(t,20)&&Tg("mismatched zip64 end of central directory record"),m==W?m=Pg(t,32):d&&m!=Pg(t,32)&&Tg("mismatched zip64 end of central directory record"),o==U?o=Pg(t,40):d&&o!=Pg(t,40)&&Tg("mismatched zip64 end of central directory record"),c=Pg(t,48)+f}}const y=o,S=s.offset-(D?76:0);if(c<g.size||(f=g.size-c-o-L,c=g.size-o-L),F!=u)throw new I(pg);if(0>c)throw new I(wg);let b=0,M=await Dt(g,c,o,Y),G=Vg(M);if(o){if(4>M.length)throw new I(wg);const A=S-o-(g.lastDiskOffset||0);if(Jg(G,b)!=T&&c!=A&&Y==u){const e=c;c=A,c>e&&(f+=c-e),M=await Dt(g,c,o,Y),G=Vg(M)}}const R=S-c-(g.lastDiskOffset||0);if(o==R||0>R||Y!=u||(o=R,M=await Dt(g,c,o,Y),G=Vg(M)),0>c||c>=g.size)throw new I(wg);Q=c;const z=xg(e,A,"filenameEncoding"),k=xg(e,A,"commentEncoding"),J=d?new n:_;let q;for(let s=0;m>s;s++){const a=new Ug(g,i,e.options);if(b+46>M.length||Jg(G,b)!=T)throw new I(hg);Wg(a,G,b+6);const o=!!a.bitFlag.languageEncodingFlag,n=b+46,c=n+a.filenameLength,E=c+a.extraFieldLength,l=kg(G,b+4),w=!(l>>8),C=l>>8==3,u=M.subarray(n,c),F=kg(G,b+32),D=E+F,Y=M.subarray(E,D),y=o,S=o,U=Jg(G,b+38),R=U&O,K={readOnly:!!(1&R),hidden:!!(2&R),system:!!(4&R),directory:!!(16&R),archive:!!(32&R)},x=Jg(G,b+42),N=xg(e,A,"decodeText")||pt,H=y?yg:z||Sg,L=S?yg:k||Sg;let j=N(u,H);j===_&&(j=pt(u,H));let v=N(Y,L);v===_&&(v=pt(Y,L)),t.assign(a,{index:s,versionMadeBy:l,msDosCompatible:w,compressedSize:0,uncompressedSize:0,commentLength:F,offset:x,diskNumberStart:kg(G,b+34),internalFileAttributes:kg(G,b+36),externalFileAttributes:U,msdosAttributesRaw:R,msdosAttributes:K,rawFilename:u,filenameUTF8:y,commentUTF8:S,rawExtraField:M.subarray(c,E),rawComment:Y,filename:j,comment:v}),Og(a,a,G,b+6),a.offset+=f,Q=r.min(a.offset,Q),d&&(J.has(a.filename)&&(q=!0),J.add(a.filename));const $=a.externalFileAttributes>>16&W;a.unixMode===_&&16877&$&&(a.unixMode=$);const AA=!!(a.unixMode&V),eA=!!(a.unixMode&Z),tA=!!(512&a.unixMode),gA=a.unixMode!==_?!!(73&a.unixMode):C&&!!(73&$),iA=a.unixMode!==_&&(61440&a.unixMode)==P,sA=(61440&$)==P;t.assign(a,{setuid:AA,setgid:eA,sticky:tA,unixExternalUpper:$,internalFileAttribute:a.internalFileAttributes,externalFileAttribute:a.externalFileAttributes,executable:gA,directory:iA||sA||w&&K.directory||a.filename.endsWith(X)&&!a.uncompressedSize,zipCrypto:a.encrypted&&!a.extraFieldAES});const rA=new ig(a);rA.getData=(A,t)=>a.getData(A,rA,e.readRanges,t),rA.arrayBuffer=async A=>{const t=new p,[g]=await h.all([new B(t.readable).arrayBuffer(),a.getData(t,rA,e.readRanges,A)]);return g},b=D;const{onprogress:aA}=A;if(aA)try{await aA(s+1,m,new ig(a))}catch{}yield rA}d&&b!=y&&Tg("trailing central directory data"),q&&Tg("duplicate filename"),d&&(f||m&&Q>0)&&Tg("prepended data");const j=xg(e,A,"extractPrependedData"),v=xg(e,A,"extractAppendedData");return j&&(e.prependedData=Q>0?await Dt(g,0,Q):new E),e.comment=w?await Dt(g,l+L,w):new E,v&&(e.appendedData=C<g.size?await Dt(g,C,g.size-C):new E),!0}async getEntries(A={}){const e=[];for await(const t of this.getEntriesGenerator(A))e.push(t);return e}async close(){}}class Ug{constructor(A,e,g){t.assign(this,{reader:A,config:e,options:g})}async getData(A,e,g,i={}){const s=this,{reader:a,index:o,offset:n,diskNumberStart:B,extraFieldAES:c,extraFieldZip64:l,compressionMethod:w,config:C,bitFlag:d,signature:h,rawLastModDate:u,uncompressedSize:F,compressedSize:Q}=s,{dataDescriptor:D}=d,Y=e.localDirectory={},p=await Dt(a,n,q,B),m=Vg(p);let y=xg(s,i,sg),S=xg(s,i,rg);const b=xg(s,i,ag);if(y=y&&y.length&&y,S=S&&S.length&&S,c&&99!=c.originalCompressionMethod)throw new I(Yg);if(0!=w&&8!=w&&9!=w&&!b)throw new I(Yg);if(p.length<q||Jg(m,0)!=R)throw new I(ug);Wg(Y,m,4);const{extraFieldLength:M,filenameLength:G}=Y,U=xg(s,i,ng);let W=new E;if(U&&(G||M)){const A=await Dt(a,n+q,G+M,B);W=A.subarray(0,G),Y.rawExtraField=A.subarray(G)}else Y.rawExtraField=M?await Dt(a,n+q+G,M,B):new E;Og(s,Y,m,4,!0),U&&((A,e,t)=>{const{rawFilename:g}=A;(t.length!=g.length||t.some((A,e)=>A!=g[e]))&&Tg("mismatched local file header (filename)"),(2057&e.rawBitFlag)!=(2057&A.rawBitFlag)&&Tg("mismatched local file header (general purpose bit flag)"),e.compressionMethod!=A.compressionMethod&&Tg("mismatched local file header (compression method)"),e.bitFlag.dataDescriptor||!(e.signature||e.compressedSize||e.uncompressedSize)||e.signature==A.signature&&e.compressedSize==A.compressedSize&&e.uncompressedSize==A.uncompressedSize||Tg("mismatched local file header (signature or sizes)")})(s,Y,W);const{lastAccessDate:K,creationDate:T}=Y;K&&(e.lastAccessDate=K),T&&(e.creationDate=T);const x=s.encrypted&&Y.encrypted&&!b,N=x&&!c;if(b||(e.zipCrypto=N),x){if(!N&&c.strength===_)throw new I(Dg);if(!y&&!S)throw new I(Qg)}const H=n+q+G+M,L=Q,k=a.readable;t.assign(k,{diskNumberStart:B,offset:H,size:L});const J=xg(s,i,og),P=xg(s,i,"checkPasswordOnly");let V=xg(s,i,"checkOverlappingEntry");const Z=xg(s,i,"checkOverlappingEntryOnly");Z&&(V=!0);const{onstart:X,onprogress:j,onend:v}=i,$=9==w;let AA=xg(s,i,cg);$&&(AA=!1);const eA={options:{codecType:le,password:y,rawPassword:S,zipCrypto:N,encryptionStrength:c&&c.strength,signed:xg(s,i,"checkSignature")&&!b,passwordVerification:N&&(D?u>>>8&O:h>>>24&O),outputSize:b?Q:F,signature:h,compressed:0!=w&&!b,encrypted:x,useWebWorkers:xg(s,i,Bg),useCompressionStream:AA,transferStreams:xg(s,i,Ig),deflate64:$,checkPasswordOnly:P},config:C,streamOptions:{signal:J,size:L,onstart:X,onprogress:j,onend:v}};let tA;V&&await(async({reader:A,fileEntry:e,index:t,offset:g,diskNumberStart:i,signature:s,compressedSize:a,uncompressedSize:o,dataOffset:n,dataDescriptor:B,extraFieldZip64:c,readRanges:E})=>{let l=0;if(i&&A.readers)for(let e=0;e<r.min(i,A.readers.length);e++)l+=A.readers[e].size;let w=0;if(B&&(w=c?20:12),w){const t=await Dt(A,n+a,w+4,i);if(t.length==w+4&&Jg(Vg(t),0)==z){const A=Jg(Vg(t),4);let g,i;c?(g=Pg(Vg(t),8),i=Pg(Vg(t),16)):(g=Jg(Vg(t),8),i=Jg(Vg(t),12)),(e.encrypted&&!e.zipCrypto||A==s)&&g==a&&i==o&&(w+=4)}}const C={start:l+g,end:l+n+a+w,fileEntry:e};for(const[A,e]of E)if(A!=t&&C.start<e.end&&e.start<C.end){const A=new I(mg);throw A.overlappingEntry=e.fileEntry,A}E.set(t,C)})({reader:a,fileEntry:e,index:o,offset:n,diskNumberStart:B,signature:h,compressedSize:Q,uncompressedSize:F,dataOffset:H,dataDescriptor:D||Y.bitFlag.dataDescriptor,extraFieldZip64:l||Y.extraFieldZip64,readRanges:g});try{if(!Z){P&&(A=new f),A=new Ft(A),await Qt(A,b?Q:F),({writable:tA}=A);const{outputSize:e}=await Te({readable:k,writable:tA},eA);if(A.size+=e,e!=(b?Q:F))throw new I(se)}}catch(e){if(e.outputSize!==_&&(A.size+=e.outputSize),!P||e.message!=QA)throw e}finally{xg(s,i,Eg)||!tA||tA.locked||await tA.getWriter().close()}return P||Z?_:A.getData?A.getData():tA}}function Wg(A,e,g){const i=A.rawBitFlag=kg(e,g+2),s=!(1&~i),r=Jg(e,g+6);t.assign(A,{encrypted:s,version:kg(e,g),bitFlag:{level:(6&i)>>1,dataDescriptor:!(8&~i),languageEncodingFlag:(i&J)==J},rawLastModDate:r,lastModDate:Ng(r),filenameLength:kg(e,g+22),extraFieldLength:kg(e,g+24)})}function Og(A,e,g,i,s){const{rawExtraField:r}=e,n=e.extraField=new o,B=Vg(new E(r));let c=0;try{for(;c<r.length;){const A=kg(B,c),e=kg(B,c+2);n.set(A,{type:A,data:r.slice(c+4,c+4+e)}),c+=4+e}}catch{}const l=kg(g,i+4);t.assign(e,{signature:Jg(g,i+10),compressedSize:Jg(g,i+14),uncompressedSize:Jg(g,i+18)});const w=n.get(1);w&&(((A,e)=>{e.zip64=!0;const t=Vg(A.data),g=bg.filter(([A,t])=>e[A]==t),i=g.reduce((A,[,e])=>A+Mg[e].bytes,0);if(A.data.length<i)throw new I(Fg);for(let i=0,s=0;i<g.length;i++){const[r,a]=g[i],o=Mg[a];e[r]=A[r]=o.getValue(t,s),s+=o.bytes}})(w,e),e.extraFieldZip64=w);const C=n.get(28789);C&&(Rg(C,mt,ft,e,A),e.extraFieldUnicodePath=C);const d=n.get(25461);d&&(Rg(d,yt,St,e,A),e.extraFieldUnicodeComment=d);const h=n.get(39169);h&&h.data.length>=7?(((A,e,g)=>{const i=Vg(A.data),s=Lg(i,4);t.assign(A,{vendorVersion:Lg(i,0),vendorId:Lg(i,2),strength:s,originalCompressionMethod:g,compressionMethod:kg(i,5)}),e.compressionMethod=A.compressionMethod})(h,e,l),e.extraFieldAES=h):e.compressionMethod=l;const u=n.get(10);u&&(((A,e)=>{const g=Vg(A.data);let i,s=4;try{for(;s<A.data.length&&!i;){const e=kg(g,s),t=kg(g,s+2);1==e&&(i=A.data.slice(s+4,s+4+t)),s+=4+t}}catch{}try{if(i&&24==i.length){const g=Vg(i),s=g.getBigUint64(0,!0),r=g.getBigUint64(8,!0),a=g.getBigUint64(16,!0);t.assign(A,{rawLastModDate:s,rawLastAccessDate:r,rawCreationDate:a});const o={lastModDate:Hg(s),lastAccessDate:Hg(r),creationDate:Hg(a)};t.assign(A,o),t.assign(e,o)}}catch{}})(u,e),e.extraFieldNTFS=u);const F=n.get(30805);if(F)Kg(F,e,!1),e.extraFieldUnix=F;else{const A=n.get(30837);A&&(Kg(A,e,!0),e.extraFieldInfoZip=A)}const Q=n.get(k);Q&&(((A,e,t)=>{if(!A.data.length)return;const g=Vg(A.data),i=Lg(g,0),s=[],r=[];t?(1&~i||(s.push(Wt),r.push(Ot)),2&~i||(s.push(Rt),r.push("rawLastAccessDate")),4&~i||(s.push(Kt),r.push(zt))):5>A.data.length||(s.push(Wt),r.push(Ot));let o=1;s.forEach((t,i)=>{if(A.data.length>=o+4){const s=Jg(g,o);e[t]=A[t]=new a(1e3*(0|s));const n=r[i];A[n]=s}o+=4})})(Q,e,s),e.extraFieldExtendedTimestamp=Q);const D=n.get(6534);D&&(e.extraFieldUSDZ=D)}function Rg(A,e,g,i,s){if(5>A.data.length)return void(A.valid=!1);const r=Vg(A.data),a=new cA;a.append(s[g]);const o=Vg(new E(4));o.setUint32(0,a.get(),!0);const n=Jg(r,1);t.assign(A,{version:Lg(r,0),[e]:pt(A.data.subarray(5)),valid:!s.bitFlag.languageEncodingFlag&&n==Jg(o,0)}),A.valid&&(i[e]=A[e],i[e+"UTF8"]=!0)}function Kg(A,e,g){try{const i=Vg(new E(A.data));let s,r;if(g){let e=0;const g=Lg(i,e++),a=Lg(i,e++);s=zg(A.data.subarray(e,e+a)),e+=a;const o=Lg(i,e++);r=zg(A.data.subarray(e,e+o)),t.assign(A,{version:g,uid:s,gid:r})}else 4>A.data.length||(s=kg(i,0),r=kg(i,2),t.assign(A,{uid:s,gid:r}));s!==_&&(e.uid=s),r!==_&&(e.gid=r)}catch{}}function zg(A){const e=new E(4);return e.set(A,0),new C(e.buffer,e.byteOffset,4).getUint32(0,!0)}function Tg(A){const e=new I(fg);throw e.reason=A,e}function xg(A,e,t){return e[t]===_?A.options[t]:e[t]}function Ng(A){const e=(4294901760&A)>>16,t=A&W;try{return new a(1980+((65024&e)>>9),((480&e)>>5)-1,31&e,(63488&t)>>11,(2016&t)>>5,2*(31&t),0)}catch{}}function Hg(A){return new a(i(A/s(1e4)-s(116444736e5)))}function Lg(A,e){return A.getUint8(e)}function kg(A,e){return A.getUint16(e,!0)}function Jg(A,e){return A.getUint32(e,!0)}function Pg(A,e){return i(A.getBigUint64(e,!0))}function Vg(A){return new C(A.buffer,A.byteOffset,A.byteLength)}const Zg="File already exists",Xg="Zip file comment exceeds 64KB",qg="File entry comment exceeds 64KB",jg="File entry name exceeds 64KB",vg="Version exceeds 65535",_g="The strength must equal 1, 2, or 3",$g="Extra field type exceeds 65535",Ai="Extra field data exceeds 64KB",ei=-2147483648,ti=2147483647,gi="Zip64 is not supported (set the 'zip64' option to 'true')",ii="Undefined uncompressed size",si="Undefined reader",ri="Zip file not empty",ai=new E([7,0,2,0,65,69,3,0,0]),oi="infozip",ni="unix";let Bi=0;const ci=[];class Ii{constructor(A,e={}){const g=(A=new Ft(A)).availableSize!==_&&A.availableSize>0&&A.availableSize!==$&&A.maxSize!==_&&A.maxSize>0&&A.maxSize!==$;t.assign(this,{writer:A,addSplitZipSignature:g,options:e,config:sA(),files:new o,filenames:new n,offset:e[lg]===_?A.size||A.writable.size||0:e[lg],initialOffset:e[lg]===_?0:e[lg]-(A.size||A.writable.size||0),pendingAddFileCalls:new n,bufferedWrites:0,lastFileEntry:_})}async prependZip(A){if(this.filenames.size)throw new I(ri);A=new ut(A),await Qt(A);const e=new Gg(A.readable),g=await e.getEntries();await e.close(),await Qt(this.writer),await A.readable.pipeTo(this.writer.writable,{preventClose:!0,preventAbort:!0}),this.writer.size=this.offset=A.size,this.filenames=new n(g.map(A=>A.filename)),this.files=new o(g.map(A=>{const{version:e,rawLastModDate:g,lastAccessDate:i,creationDate:s,rawFilename:r,bitFlag:a,encrypted:o,uncompressedSize:n,compressedSize:B,diskOffset:c,diskNumber:I,zip64:l}=A;let{compressionMethod:w,rawExtraFieldZip64:C,rawExtraFieldAES:d,rawExtraFieldExtendedTimestamp:h,rawExtraFieldNTFS:u,rawExtraFieldUnix:F,rawExtraField:Q}=A;const{level:D,languageEncodingFlag:Y,dataDescriptor:p}=a;C=C||new E,d=d||new E,h=h||new E,u=u||new E,F=F||new E,Q=Q||new E,A.extraFieldAES&&(w=99);const m=Mi(C,d,h,u,F,Q),f=l&&n>=U,y=l&&B>=U,S=-7&Ui(D,Y,p,o,w)|D<<1,{headerArray:b,headerView:M}=Gi({version:e,bitFlag:S,compressionMethod:w,uncompressedSize:n,compressedSize:B,rawLastModDate:g,rawFilename:r,zip64CompressedSize:y,zip64UncompressedSize:f,extraFieldLength:m}),{signature:G}=A;return G!==_&&fi(M,10,G),t.assign(A,{zip64UncompressedSize:f,zip64CompressedSize:y,zip64Offset:l&&this.offset-c>=U,zip64DiskNumberStart:l&&I>=W,rawExtraFieldZip64:C,rawExtraFieldAES:d,rawExtraFieldExtendedTimestamp:h,rawExtraFieldNTFS:u,rawExtraFieldUnix:F,rawExtraField:Q,extendedTimestamp:h.length>0||u.length>0,extraFieldExtendedTimestampFlag:1+(i?2:0)+(s?4:0),headerArray:b,headerView:M}),[A.filename,A]}))}async add(A="",e,g={}){const i=this;g=t.assign({},g);const{pendingAddFileCalls:r,config:o}=i;let n,B;Bi<o.maxWorkers?Bi++:await new h(A=>ci.push(A));try{if(A=A.trim(),Yi(i,g,Xt)&&!A.endsWith(X)&&(A+=X),i.filenames.has(A))throw new I(Zg);return i.filenames.add(A),B=!0,n=(async(A,e,g,i)=>{const r=((A,e,t)=>{e=e.trim();let g=Yi(A,t,Lt),i=Yi(A,t,Vt,g?20:768);const s=Yi(A,t,qt),r=Yi(A,t,"uid"),a=Yi(A,t,"gid");let o=Yi(A,t,$t),n=Yi(A,t,"unixExtraFieldType"),B=Yi(A,t,Ag),c=Yi(A,t,eg),E=Yi(A,t,tg);if(r!==_&&(0>r||r>U))throw new I("Invalid uid (must be integer 0..2^32-1)");if(a!==_&&(0>a||a>U))throw new I("Invalid gid (must be integer 0..2^32-1)");if(o!==_&&(0>o||o>W))throw new I("Invalid UNIX mode (must be integer 0..65535)");if(n!==_&&n!==oi&&n!==ni)throw new I("Invalid unixExtraFieldType (must be 'infozip' or 'unix')");if(n===ni&&(r!==_&&r>W||a!==_&&a>W))throw new I("uid/gid must be 0..65535 for unixExtraFieldType 'unix' (use 'infozip' for larger ids)");n!==_||r===_&&a===_||(n=oi);let l=Yi(A,t,Nt),w=Yi(A,t,Ht);const C=l!==_||w!==_;if(r!==_||a!==_||o!==_||n?(g=!1,i=i&W|768):C&&(g=!0,i&=O),l!==_&&(0>l||l>O))throw new I("Invalid msdosAttributesRaw (must be integer 0..255)");if(w&&"object"!=typeof w)throw new I("Invalid msdosAttributes (must be an object with boolean flags)");if(i>W)throw new I(vg);let d=Yi(A,t,xt,0);!t[Xt]&&e.endsWith(X)&&(t[Xt]=!0);const h=Yi(A,t,Xt);let u;return h?(e.endsWith(X)||(e+=X),0===d&&(d=16,g||(d|=16877<<16))):g||0!==d||(d=s?493<<16:27525120),g||(u=d>>16&W,o=o===_?u:o&W,B?o|=V:B=!!(o&V),c?o|=Z:c=!!(o&Z),E?o|=512:E=!!(512&o),h&&(o|=P),d=(o&W)<<16|d&O),({msdosAttributesRaw:l,msdosAttributes:w}=((A,e)=>{if(A!==_)A&=O;else if(e!==_){const{readOnly:t,hidden:g,system:i,directory:s,archive:r}=e;let a=0;t&&(a|=1),g&&(a|=2),i&&(a|=4),s&&(a|=16),r&&(a|=32),A=a&O}return e===_&&(e={readOnly:!!(1&A),hidden:!!(2&A),system:!!(4&A),directory:!!(16&A),archive:!!(32&A)}),{msdosAttributesRaw:A,msdosAttributes:e}})(l,w)),C&&(d=d&U|l&O),{name:e,resolvedOptions:{versionMadeBy:i,msDosCompatible:g,externalFileAttributes:d,unixExternalUpper:u,uid:r,gid:a,unixMode:o,unixExtraFieldType:n,setuid:B,setgid:c,sticky:E,msdosAttributesRaw:l,msdosAttributes:w}}})(A,e,i);({name:e}=r);const o=((A,e,t)=>{const g=Yi(A,t,"encodeText",EA);let i=g(e);if(i===_&&(i=EA(e)),Mi(i)>W)throw new I(jg);const s=t[yt]||"";let r=g(s);if(r===_&&(r=EA(s)),Mi(r)>W)throw new I(qg);const o=Yi(A,t,Pt,20);if(o>W)throw new I(vg);const n=Yi(A,t,Wt,new a),B=Yi(A,t,Rt),c=Yi(A,t,Kt),l=Yi(A,t,Tt,0),w=Yi(A,t,ag);let C,d;w||(C=Yi(A,t,sg),d=Yi(A,t,rg));const h=Yi(A,t,"encryptionStrength",3),u=Yi(A,t,Zt),F=Yi(A,t,"extendedTimestamp",!0),Q=Yi(A,t,"keepOrder",!0),D=Yi(A,t,Bg),Y=Yi(A,t,Ig,!0),p=Yi(A,t,"bufferedWrite"),m=Yi(A,t,"createTempStream"),f=Yi(A,t,"dataDescriptorSignature",!0),y=Yi(A,t,og),S=Yi(A,t,"useUnicodeFileNames",!0),b=Yi(A,t,jt);if(!w&&b!==_&&0!==b&&8!==b)throw new I("Compression method not supported");let M=Yi(A,t,"level"),G=Yi(A,t,cg),U=Yi(A,t,"dataDescriptor");p&&U===_&&(U=!1),(U===_||u)&&(U=!0),M!==_&&6!=M&&(G=!1),G||A.config.CompressionStream!==_||A.config.CompressionStreamZlib!==_||(M=0);const O=Yi(A,t,kt);if(!u&&(C!==_||d!==_)&&(1>h||h>3))throw new I(_g);let R=new E;const K=t[_t];if(K){let A=0,e=0;K.forEach(e=>A+=4+Mi(e)),R=new E(A);const t=bi(R);K.forEach((A,g)=>{if(g>W)throw new I($g);if(Mi(A)>W)throw new I(Ai);mi(t,e,g),mi(t,e+2,Mi(A)),Si(R,A,e+4),e+=4+Mi(A)})}return{comment:s,resolvedOptions:{rawFilename:i,rawComment:r,version:o,lastModDate:n,lastAccessDate:B,creationDate:c,internalFileAttributes:l,passThrough:w,password:C,rawPassword:d,encryptionStrength:h,zipCrypto:u,extendedTimestamp:F,keepOrder:Q,useWebWorkers:D,transferStreams:Y,bufferedWrite:p,createTempStream:m,dataDescriptorSignature:f,signal:y,useUnicodeFileNames:S,compressionMethod:b,level:M,useCompressionStream:G,dataDescriptor:U,zip64:O,rawExtraField:R}}})(A,e,i),{comment:n}=o,B=i[_t];let c;A.files.set(e,_);try{const a=await(async(A,e,{resolvedOptions:t},g)=>{const{passThrough:i,zipCrypto:s,password:r,rawPassword:a,encryptionStrength:o}=t;let{dataDescriptor:n,zip64:B,level:c,compressionMethod:E}=t,l=0,w=0;if(i){if(!e)throw new I(si);if(w=g[bt],w===_)throw new I(ii)}const C=!0===B,d=Yi(A,g,Jt),h=!!e&&(!!(r&&Mi(r)||a&&Mi(a))||i&&d);e||(c=0,E=0);const u=h?s?12:16+4*o:0;e&&(e=new ut(e),await Qt(e),i?(g.uncompressedSize=w,l=pi(w)+u):e.size===_?(n=!0,(B||B===_)&&(B=!0,w=l=4294967296)):(g.uncompressedSize=w=e.size,l=pi(w)+u));const F=C||w>=U,Q=C||l>=U;if(F||Q){if(!1===B)throw new I(gi);B=!0}return B=B||!1,{reader:e,resolvedOptions:{dataDescriptor:n,zip64:B,zip64UncompressedSize:F,zip64CompressedSize:Q,uncompressedSize:w,level:c,compressionMethod:E,encrypted:h}}})(A,g,o,i);({reader:g}=a);const{diskOffset:n,diskNumber:B}=A.writer,l=(A=>{const{rawFilename:e,lastModDate:t,lastAccessDate:g,creationDate:i,level:s,zip64:r,zipCrypto:a,useUnicodeFileNames:o,dataDescriptor:n,directory:B,rawExtraField:c,encryptionStrength:l,extendedTimestamp:w,passThrough:C,encrypted:d,zip64UncompressedSize:h,zip64CompressedSize:u,uncompressedSize:F}=A;let{version:Q,compressionMethod:D}=A;const Y=!B&&(D===_?s===_||s>0:0!==D);let p;const m=C||!Y,f=r&&(A.bufferedWrite||!n||!h&&!u||m),y=f||r&&n&&(h||u);if(r&&(h||u)){const A=20,e=Ci(A);if(e.uint16(1),e.uint16(A-4),p=e.array,f&&(e.uint64(F),m)){const A=d?a?12:16+4*l:0;e.uint64(C?0:F+A)}}else p=new E;let S,b,M,G,U;if(d&&!a){const A=Ci(Mi(ai)+2);A.uint16(39169),A.bytes(ai),S=A.array,S[8]=l}else S=new E;if(w){const A=Fi(t);if(Qi(A)){const e=9+(g?4:0)+(i?4:0),t=Ci(e);G=1+(g?2:0)+(i?4:0),t.uint16(k),t.uint16(e-4),t.uint8(G),t.uint32(A),g&&t.uint32(Di(Fi(g))),i&&t.uint32(Di(Fi(i))),M=t.array}else M=new E;try{const A=ui(t),e=Ci(36);e.uint16(10),e.uint16(32),e.skip(4),e.uint16(1),e.uint16(24),e.uint64(A),e.uint64(ui(g)||A),e.uint64(ui(i)||A),b=e.array}catch{b=new E}}else b=M=new E;try{const{uid:e,gid:t,unixExtraFieldType:g}=A;if(g!=oi||e===_&&t===_)if(g!=ni||e===_&&t===_)U=new E;else{const A=Ci(8);A.uint16(30805),A.uint16(4),A.uint16((e===_?0:e)&W),A.uint16((t===_?0:t)&W),U=A.array}else{const A=wi(e),g=wi(t),i=3+A.length+g.length,s=Ci(4+i);s.uint16(30837),s.uint16(i),s.uint8(1),s.uint8(A.length),s.bytes(A),s.uint8(g.length),s.bytes(g),U=s.array}}catch{U=new E}D===_&&(D=Y?8:0),r&&(Q=Q>45?Q:45),d&&!a&&(Q=Q>51?Q:51,S[9]=D,D=99);const O=y?Mi(p):0,K=O+Mi(S,M,b,U,c);if(K>W)throw new I(Ai);const{headerArray:z,headerView:T,rawLastModDate:x}=Gi({version:Q,bitFlag:Ui(s,o,n,d,D),compressionMethod:D,uncompressedSize:F,lastModDate:v>t?v:t>j?j:t,rawFilename:e,zip64CompressedSize:u,zip64UncompressedSize:h,extraFieldLength:K}),N=Ci(q+Mi(e)+K),H=N.array,L=bi(H);return N.uint32(R),N.bytes(z),N.bytes(e),y&&N.bytes(p),N.bytes(S),N.bytes(M),N.bytes(b),N.bytes(U),N.bytes(c),n&&(u||fi(L,18,0),h||fi(L,22,0)),{localHeaderArray:H,localHeaderView:L,headerArray:z,headerView:T,lastModDate:t,rawLastModDate:x,encrypted:d,compressed:Y,version:Q,compressionMethod:D,extraFieldExtendedTimestampFlag:G,rawExtraFieldZip64:new E,localExtraFieldZip64Length:O,rawExtraFieldExtendedTimestamp:M,rawExtraFieldNTFS:b,rawExtraFieldUnix:U,rawExtraFieldAES:S,extraFieldLength:K}})(i=t.assign({},i,r.resolvedOptions,o.resolvedOptions,a.resolvedOptions,{internalFileAttribute:o.resolvedOptions.internalFileAttributes,externalFileAttribute:r.resolvedOptions.externalFileAttributes,signature:i[vt],offset:A.offset-n,diskNumberStart:B})),w=(({zip64:A,dataDescriptor:e,dataDescriptorSignature:t})=>{let g,i=new E,s=0,r=A?20:12;return t&&(r+=4),e&&(i=new E(r),g=bi(i),t&&(s=4,fi(g,0,z))),{dataDescriptorArray:i,dataDescriptorView:g,dataDescriptorOffset:s}})(i),C=Mi(l.localHeaderArray,w.dataDescriptorArray);c=await(async(A,e,g,i,r)=>{const{files:a,writer:o}=A,{keepOrder:n,dataDescriptor:B,signal:c}=r,{headerInfo:l}=i,w=A.options.usdz,C=A.lastFileEntry;let d,u,F,Q,D,Y,m,y={},S=0;a.set(e,y),A.lastFileEntry=y;try{let u;n&&(u=C&&C.lock,y.lock=new h(A=>F=A)),r.bufferedWrite||!n||A.writerLocked||A.bufferedWrites||!B?(d=!0,A.bufferedWrites++,m=r.createTempStream?await r.createTempStream():new p(_,_,{highWaterMark:$}),m.size=0,await Qt(o)):(m=o,await b()),await Qt(m);const{diskOffset:G}=o;if(A.addSplitZipSignature){delete A.addSplitZipSignature;const e=new E(4);fi(bi(e),0,K),await hi(o,e),A.offset+=4}w&&!d&&li(i,A.offset-G);const{localHeaderArray:W}=l;d||(await u,await M());const R=o.diskNumber,z=di(A,o);if(y.diskNumberStart=R,d||(D=!0,Y=o.size,await hi(m,W)),y=await(async(A,e,{diskNumberStart:g,lock:i},r,a,o)=>{const{headerInfo:n,dataDescriptorInfo:B,metadataSize:c}=r,{headerArray:E,headerView:l,lastModDate:w,rawLastModDate:C,encrypted:d,compressed:h,version:u,compressionMethod:F,rawExtraFieldZip64:Q,localExtraFieldZip64Length:D,rawExtraFieldExtendedTimestamp:Y,extraFieldExtendedTimestampFlag:p,rawExtraFieldNTFS:m,rawExtraFieldUnix:f,rawExtraFieldAES:y}=n,{dataDescriptorArray:S}=B,{rawFilename:b,lastAccessDate:M,creationDate:G,password:W,rawPassword:R,level:K,zip64:z,zip64UncompressedSize:T,zip64CompressedSize:x,zipCrypto:N,dataDescriptor:H,directory:L,executable:k,versionMadeBy:J,rawComment:P,rawExtraField:V,useWebWorkers:Z,transferStreams:X,onstart:q,onprogress:j,onend:v,signal:$,encryptionStrength:AA,extendedTimestamp:eA,msDosCompatible:tA,internalFileAttributes:gA,externalFileAttributes:iA,uid:sA,gid:aA,unixMode:oA,setuid:nA,setgid:BA,sticky:cA,unixExternalUpper:IA,msdosAttributesRaw:EA,msdosAttributes:lA,useCompressionStream:wA,passThrough:CA}=o,dA={lock:i,versionMadeBy:J,zip64:z,directory:!!L,executable:!!k,filenameUTF8:!0,rawFilename:b,commentUTF8:!0,rawComment:P,rawExtraFieldZip64:Q,localExtraFieldZip64Length:D,rawExtraFieldExtendedTimestamp:Y,rawExtraFieldNTFS:m,rawExtraFieldUnix:f,rawExtraFieldAES:y,rawExtraField:V,extendedTimestamp:eA,msDosCompatible:tA,internalFileAttributes:gA,externalFileAttributes:iA,diskNumberStart:g,uid:sA,gid:aA,unixMode:oA,setuid:nA,setgid:BA,sticky:cA,unixExternalUpper:IA,msdosAttributesRaw:EA,msdosAttributes:lA};let{signature:hA,uncompressedSize:uA}=o,FA=0;CA||(uA=0);const{writable:QA}=e;if(A){A.chunkSize=rA(a);const t=A.readable,g=A.size,i={options:{codecType:Ee,level:K,rawPassword:R,password:W,encryptionStrength:AA,zipCrypto:d&&N,passwordVerification:d&&N&&C>>8&O,signed:!CA,compressed:h&&!CA,encrypted:d&&!CA,useWebWorkers:Z,useCompressionStream:wA,transferStreams:X},config:a,streamOptions:{signal:$,size:g,onstart:q,onprogress:j,onend:v}};try{const A=await Te({readable:t,writable:QA},i);if(FA=A.outputSize,e.size+=FA,CA||(uA=A.inputSize,hA=A.signature),!x&&FA>=U||!T&&uA>=U)throw new I(gi)}catch(A){throw A.outputSize!==_&&(e.size+=A.outputSize),A}}return(({signature:A,compressedSize:e,uncompressedSize:t,headerInfo:g,dataDescriptorInfo:i},{zip64:r,zipCrypto:a,dataDescriptor:o})=>{const{headerView:n,encrypted:B}=g,{dataDescriptorView:c,dataDescriptorOffset:I}=i;B&&!a||A===_||(fi(n,10,A),o&&fi(c,I,A)),r?o&&(yi(c,I+4,s(e)),yi(c,I+12,s(t))):(fi(n,14,e),fi(n,18,t),o&&(fi(c,I+4,e),fi(c,I+8,t)))})({signature:hA,compressedSize:FA,uncompressedSize:uA,headerInfo:n,dataDescriptorInfo:B},o),H&&await hi(e,S),t.assign(dA,{uncompressedSize:uA,compressedSize:FA,lastModDate:w,rawLastModDate:C,creationDate:G,lastAccessDate:M,encrypted:d,zipCrypto:N,size:c+FA,compressionMethod:F,version:u,headerArray:E,headerView:l,signature:hA,extraFieldExtendedTimestampFlag:p,zip64UncompressedSize:T,zip64CompressedSize:x}),dA})(g,m,y,i,A.config,r),d||(D=!1),a.set(e,y),y.filename=e,d){if(await h.all([m.writable.getWriter().close(),u]),await b(),Q=!0,Y=o.size,await M(),y.diskNumberStart=o.diskNumber,y.offset=di(A,o),w){const e=i.metadataSize;li(i,A.offset-o.diskOffset),y.size+=i.metadataSize-e}(({rawFilename:A,encrypted:e,zip64:t,localExtraFieldZip64Length:g,signature:i,compressedSize:r,uncompressedSize:a,zip64UncompressedSize:o,zip64CompressedSize:n},B,{dataDescriptor:c})=>{if(c||(e||fi(B,14,i),n||fi(B,18,r),o||fi(B,22,a)),t&&g){const e=q+Mi(A)+4;yi(B,e,s(a)),yi(B,e+8,s(r))}})(y,l.localHeaderView,r),await hi(o,l.localHeaderArray),await(async(A,e,t)=>{const g=e.writable.getWriter();try{await A.pipeTo(new f({async write(A){var e;await g.ready,await g.write(A),e=Mi(A),S+=e}}),{preventClose:!0,preventAbort:!0,signal:t})}finally{g.releaseLock()}})(m.readable,o,c),o.size+=m.size,Q=!1}else y.diskNumberStart=R,y.offset=z;return A.offset+=y.size,y}catch(t){if(Q||D){if(A.hasCorruptedEntries=!0,t)try{t.corruptedEntry=!0}catch{}A.offset+=o.size-Y,d&&(A.offset+=S)}throw a.delete(e),t}finally{d&&A.bufferedWrites--,F&&F(),u&&u()}async function b(){A.writerLocked=!0;const{lockWriter:e}=A;A.lockWriter=new h(e=>u=()=>{A.writerLocked=!1,e()}),await e}async function M(){Mi(l.localHeaderArray)>o.availableSize&&(o.availableSize=0,await hi(o,new E))}})(A,e,g,{headerInfo:l,dataDescriptorInfo:w,metadataSize:C},i)}catch(t){throw A.files.delete(e),t}return t.assign(c,{name:e,comment:n,extraField:B}),new ig(c)})(i,A,e,g),r.add(n),await n}catch(e){throw B&&i.filenames.delete(A),e}finally{r.delete(n);const A=ci.shift();A?A():Bi--}}remove(A){const{filenames:e,files:t}=this;if("string"==typeof A&&(A=t.get(A)),A&&A.filename!==_){const{filename:g}=A;if(e.has(g)&&t.has(g))return e.delete(g),t.delete(g),!0}return!1}async close(A=new E,t={}){const{pendingAddFileCalls:g,writer:i}=this,{writable:r}=i;if(Mi(A)>W)throw new I(Xg);for(;g.size;)await h.allSettled(e.from(g));return await(async(A,t,g)=>{const i=(A=>{let e=0;for(const[,t]of A){const{rawFilename:A,rawExtraFieldAES:g,rawComment:i,rawExtraFieldNTFS:s,rawExtraFieldUnix:r,rawExtraField:a,extendedTimestamp:o,extraFieldExtendedTimestampFlag:n,lastModDate:B,zip64UncompressedSize:c,zip64CompressedSize:l,uncompressedSize:w,compressedSize:C}=t,d=t.offset>=U,h=t.diskNumberStart>=W;let u,F;if(d||h||c||l){const A=4+(c?8:0)+(l?8:0)+(d?8:0)+(h?4:0),e=Ci(A);e.uint16(1),e.uint16(A-4),c&&e.uint64(w),l&&e.uint64(C),d&&e.uint64(t.offset),h&&e.uint32(t.diskNumberStart),u=e.array}else u=new E;t.rawExtraFieldZip64=u,t.zip64Offset=d,t.zip64DiskNumberStart=h;const Q=Fi(B);if(o&&Qi(Q)){const A=Ci(9);A.uint16(k),A.uint16(5),A.uint8(n),A.uint32(Q),F=A.array}else F=new E;t.rawExtraFieldExtendedTimestamp=F;const D=Mi(u,g,s,r,F,a);if(D>W)throw new I(Ai);e+=46+Mi(A,i)+D}return e})(A.files),{cdStartDiskNumber:r,cdStartDiskOffset:a}=await(async(A,t,g)=>{const{files:i,writer:s}=A,r=new E(t);await Qt(s);let a=0,o=0,n=s.diskNumber,B=s.diskOffset;for(const[A,t]of e.from(i.values()).entries()){const{offset:e,rawFilename:c,rawExtraFieldZip64:I,rawExtraFieldAES:l,rawExtraFieldExtendedTimestamp:w,rawExtraFieldNTFS:C,rawExtraFieldUnix:d,rawExtraField:h,rawComment:u,versionMadeBy:F,headerArray:Q,headerView:D,zip64UncompressedSize:Y,zip64CompressedSize:p,zip64DiskNumberStart:m,zip64Offset:f,internalFileAttributes:y,externalFileAttributes:S,diskNumberStart:b,uncompressedSize:M,compressedSize:G}=t,O=Mi(I,l,w,C,d,h),R=46+Mi(c,u)+O;a+R-o>s.availableSize&&(await hi(s,r.slice(o,a)),o=a,s.availableSize=0,await hi(s,new E)),0==A&&(n=s.diskNumber,B=s.diskOffset),Y||fi(D,18,M),p||fi(D,14,G),(f||m)&&45>t.version&&mi(D,0,45);const K=Ci(R);if(K.uint32(T),K.uint16(F),K.bytes(Q.subarray(0,24)),K.uint16(O),K.uint16(Mi(u)),K.uint16(m?W:b),K.uint16(y),K.uint32(S),K.uint32(f?U:e),K.bytes(c),K.bytes(I),K.bytes(l),K.bytes(w),K.bytes(C),K.bytes(d),K.bytes(h),K.bytes(u),Si(r,K.array,a),a+=R,g.onprogress)try{await g.onprogress(A+1,i.size,new ig(t))}catch{}}return await hi(s,o?r.slice(o):r),{cdStartDiskNumber:n,cdStartDiskOffset:B}})(A,i,g);await(async(A,e,t,g)=>{const{writer:i}=A,{cdStartDiskNumber:r,cdStartDiskOffset:a}=g;let{directoryDataLength:o}=g,n=A.files.size,B=r,c=A.offset-a-(r?A.initialOffset:0),l=i.diskNumber;i.availableSize<L&&l++;let w=Yi(A,t,kt);if(!(U>c&&U>o&&W>n&&W>l)){if(!1===w)throw new I(gi);w=!0}const C=Mi(e);if(C>W)throw new I(Xg);const d=Ci(w?98:L);Mi(d.array)+C>i.availableSize&&(i.availableSize=0,await hi(i,new E)),l=i.diskNumber,w&&(d.uint32(N),d.uint64(44),d.uint16(45),d.uint16(45),d.uint32(l),d.uint32(B),d.uint64(n),d.uint64(n),d.uint64(o),d.uint64(c),d.uint32(H),d.uint32(l),d.uint64(s(A.offset)+s(o)-s(i.diskOffset)-s(i.diskNumber?A.initialOffset:0)),d.uint32(l+1),Yi(A,t,"supportZip64SplitFile",!0)&&(l=W,B=W),n=W,c=U,o=U),d.uint32(x),d.uint16(l),d.uint16(B),d.uint16(n),d.uint16(n),d.uint32(o),d.uint32(c),d.uint16(C),await hi(i,d.array),C&&await hi(i,e)})(A,t,g,{cdStartDiskNumber:r,cdStartDiskOffset:a,directoryDataLength:i})})(this,A,t),Yi(this,t,Eg)||await r.getWriter().close(),i.getData?i.getData():r}}function Ei(A,e,t){A.pendingAddFileCalls.add(e),e.catch(A=>{try{t(A)}catch{}})}function li(A,e){const{headerInfo:t}=A;let g,{localHeaderArray:i,extraFieldLength:s}=t,r=64-(e+Mi(i))%64;4>r&&(r+=64);const a=new E(r),o=bi(a);mi(o,0,6534),mi(o,2,r-4);const n=i;t.localHeaderArray=i=new E(Mi(n)+r),Si(i,n),Si(i,a,Mi(n)),g=bi(i),mi(g,28,s+r),t.localHeaderView=g,A.metadataSize+=r}function wi(A){if(A===_)return new E;{const e=new E(4);bi(e).setUint32(0,A,!0);let t=4;for(;t>1&&0===e[t-1];)t--;return e.subarray(0,t)}}function Ci(A){const e=new E(A),t=bi(e);let g=0;return{array:e,uint8:A=>{((A,e,t)=>{A.setUint8(e,t)})(t,g,A),g+=1},uint16:A=>{mi(t,g,A),g+=2},uint32:A=>{fi(t,g,A),g+=4},uint64:A=>{yi(t,g,s(A)),g+=8},bytes:A=>{Si(e,A,g),g+=Mi(A)},skip:A=>g+=A}}function di(A,e){return A.offset-e.diskOffset-(e.diskNumber?A.initialOffset:0)}async function hi(A,e){const{writable:t}=A,g=t.getWriter();try{await g.ready,A.size+=Mi(e),await g.write(e)}finally{g.releaseLock()}}function ui(A){if(A)return(s(A.getTime())+s(116444736e5))*s(1e4)}function Fi(A){return r.floor(A.getTime()/1e3)}function Qi(A){return A>=ei&&ti>=A}function Di(A){return r.min(ti,r.max(ei,A))}function Yi(A,e,t,g){const i=e[t]===_?A.options[t]:e[t];return i===_?g:i}function pi(A){return A+5*(r.floor(A/16383)+1)}function mi(A,e,t){A.setUint16(e,t,!0)}function fi(A,e,t){A.setUint32(e,t,!0)}function yi(A,e,t){A.setBigUint64(e,t,!0)}function Si(A,e,t){A.set(e,t)}function bi(A){return new C(A.buffer,A.byteOffset,A.byteLength)}function Mi(...A){let e=0;return A.forEach(A=>A&&(e+=A.length)),e}function Gi({version:A,bitFlag:e,compressionMethod:t,uncompressedSize:g,compressedSize:i,lastModDate:s,rawLastModDate:r,rawFilename:a,zip64CompressedSize:o,zip64UncompressedSize:n,extraFieldLength:B}){const c=Ci(26),I=c.array,E=bi(I);if(c.uint16(A),c.uint16(e),c.uint16(t),r===_){const A=new w(1),e=bi(A);mi(e,0,(s.getHours()<<6|s.getMinutes())<<5|s.getSeconds()/2),mi(e,2,(s.getFullYear()-1980<<4|s.getMonth()+1)<<5|s.getDate()),r=A[0]}return c.uint32(r),c.skip(4),o||i!==_?c.uint32(o?U:i):c.skip(4),n||g!==_?c.uint32(n?U:g):c.skip(4),c.uint16(Mi(a)),c.uint16(B),{headerArray:I,headerView:E,rawLastModDate:r}}function Ui(A,e,t,g,i){let s=0;return e&&(s|=J),t&&(s|=8),8!=i&&9!=i||(0>A||A>3||(s|=6),A>3&&5>=A&&(s|=4),9==A&&(s|=2)),g&&(s|=1),s}try{aA({baseURI:void 0===Q&&"undefined"==typeof location?require("url").pathToFileURL(__filename).href:void 0===Q?location.href:G&&"SCRIPT"===G.tagName.toUpperCase()&&G.src||new c("zip-legacy.min.js",Q.baseURI).href})}catch{}aA({workerURI:A=>{const e="text/javascript",t=(A=>{A=(A=>{const e=(A=(A+"").replace(/[^A-Za-z0-9+/=]/g,"")).length,t=[];for(let g=0;e>g;g+=4){const e=nA.indexOf(A[g])<<18|nA.indexOf(A[g+1])<<12|(63&nA.indexOf(A[g+2]))<<6|63&nA.indexOf(A[g+3]);t.push(e>>16&255),"="!==A[g+2]&&t.push(e>>8&255),"="!==A[g+3]&&t.push(255&e)}return new E(t)})(A);let e=new E(1024),t=0;for(let i=0;i<A.length;){const s=A[i++];if(128&s){const r=3+(127&s),a=A[i++]<<8|A[i++],o=t-a;g(t+r);for(let A=0;r>A;A++)e[t++]=e[o+A]}else{const r=s;g(t+r);for(let g=0;r>g&&i<A.length;g++)e[t++]=A[i++]}}return(A=>{let e="";const t=A.length;let g=0;for(;t>g+2;g+=3){const t=A[g]<<16|A[g+1]<<8|A[g+2];e+=nA[t>>18&63]+nA[t>>12&63]+nA[t>>6&63]+nA[63&t]}const i=t-g;if(1===i){const t=A[g]<<16;e+=nA[t>>18&63]+nA[t>>12&63]+"=="}else if(2===i){const t=A[g]<<16|A[g+1]<<8;e+=nA[t>>18&63]+nA[t>>12&63]+nA[t>>6&63]+"="}return e})(new E(e.buffer.slice(0,t)));function g(A){if(e.length<A){let g=2*e.length;for(;A>g;)g*=2;const i=new E(g);i.set(e.subarray(0,t)),e=i}}})("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");if(A){const A=atob(t),g=new d([A],{type:e});return c.createObjectURL(g)}return"data:"+e+";base64,"+t}}),A.BlobReader=et,A.BlobWriter=tt,A.Data64URIReader=class extends $e{constructor(A){super();let e=A.length;for(;"="==A.charAt(e-1);)e--;const g=A.indexOf(",")+1;t.assign(this,{dataURI:A,dataStart:g,size:r.floor(.75*(e-g))})}readUint8Array(A,e){const{dataStart:t,dataURI:g}=this,i=new E(e),s=4*r.floor(A/3),a=atob(g.substring(s+t,4*r.ceil((A+e)/3)+t)),o=A-3*r.floor(s/4);let n=0;for(let A=o;o+e>A&&A<a.length;A++)i[A-o]=a.charCodeAt(A),n++;return n<i.length?i.subarray(0,n):i}},A.Data64URIWriter=class extends At{constructor(A){super(),t.assign(this,{data:"data:"+(A||"")+";base64,",pending:[]})}writeUint8Array(A){const e=this;let t,i=e.pending;const s=e.pending.length;for(e.pending="",t=0;t<3*r.floor((s+A.length)/3)-s;t++)i+=g.fromCharCode(A[t]);for(;t<A.length;t++)e.pending+=g.fromCharCode(A[t]);i.length>2?e.data+=Y(i):e.pending=i+e.pending}getData(){return this.data+Y(this.pending)}},A.ERR_AMBIGUOUS_ARCHIVE=fg,A.ERR_BAD_FORMAT=wg,A.ERR_CENTRAL_DIRECTORY_NOT_FOUND=hg,A.ERR_DUPLICATED_NAME=Zg,A.ERR_ENCRYPTED=Qg,A.ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND=dg,A.ERR_EOCDR_NOT_FOUND=Cg,A.ERR_EXTRAFIELD_ZIP64_NOT_FOUND=Fg,A.ERR_HTTP_RANGE=Pe,A.ERR_INVALID_COMMENT=Xg,A.ERR_INVALID_COMPRESSED_DATA=re,A.ERR_INVALID_ENCRYPTION_STRENGTH=_g,A.ERR_INVALID_ENTRY_COMMENT=qg,A.ERR_INVALID_ENTRY_NAME=jg,A.ERR_INVALID_EXTRAFIELD_DATA=Ai,A.ERR_INVALID_EXTRAFIELD_TYPE=$g,A.ERR_INVALID_PASSWORD=uA,A.ERR_INVALID_SIGNATURE=FA,A.ERR_INVALID_UNCOMPRESSED_SIZE=se,A.ERR_INVALID_VERSION=vg,A.ERR_LOCAL_FILE_HEADER_NOT_FOUND=ug,A.ERR_OVERLAPPING_ENTRY=mg,A.ERR_SPLIT_ZIP_FILE=pg,A.ERR_UNDEFINED_READER=si,A.ERR_UNDEFINED_UNCOMPRESSED_SIZE=ii,A.ERR_UNSUPPORTED_COMPRESSION=Yg,A.ERR_UNSUPPORTED_ENCRYPTION=Dg,A.ERR_UNSUPPORTED_FORMAT=gi,A.ERR_ZIP_NOT_EMPTY=ri,A.HttpRangeReader=class extends Ct{constructor(A,e={}){super(A,t.assign({},e,{useRangeHeader:!0}))}},A.HttpReader=Ct,A.Reader=$e,A.SplitDataReader=dt,A.SplitDataWriter=ht,A.TextReader=class extends et{constructor(A){super(new d([A],{type:"text/plain"}))}},A.TextWriter=class extends tt{constructor(A){super(A),t.assign(this,{encoding:A,utf8:!A||"utf-8"==A.toLowerCase()})}async getData(){const{encoding:A,utf8:e}=this,g=await super.getData();if(g.text&&e)return g.text();{const e=new FileReader;return new h((i,s)=>{t.assign(e,{onload:({target:A})=>i(A.result),onerror:()=>s(e.error)}),e.readAsText(g,A)})}}},A.Uint8ArrayReader=class extends $e{constructor(A){super(),A=new E(A.buffer,A.byteOffset,A.byteLength),t.assign(this,{array:A,size:A.length})}readUint8Array(A,e){return this.array.slice(A,A+e)}},A.Uint8ArrayWriter=class extends At{constructor(A){super(),this.defaultBufferSize=A||262144}init(A=0){t.assign(this,{offset:0,array:new E(A>0?A:this.defaultBufferSize)}),super.init()}writeUint8Array(A){const e=this,t=e.offset+A.length;if(t>e.array.length){let A=e.array.length?2*e.array.length:e.defaultBufferSize;for(;t>A;)A*=2;const g=e.array;e.array=new E(A),e.array.set(g)}e.array.set(A,e.offset),e.offset+=A.length}getData(){return this.offset===this.array.length?this.array:this.array.slice(0,this.offset)}},A.Writer=At,A.ZipReader=Gg,A.ZipReaderStream=class{constructor(A={}){const{readable:e,writable:t}=new p,g=new Gg(e,A).getEntriesGenerator();this.readable=new m({async pull(A){const{done:e,value:t}=await g.next();if(e)return A.close();const i={...t,readable:(()=>{const{readable:A,writable:e}=new p;if(t.getData)return(async()=>{try{await t.getData(e)}catch(A){try{await e.abort(A)}catch{}}})(),A})()};delete i.getData,A.enqueue(i)}}),this.writable=t}},A.ZipWriter=Ii,A.ZipWriterStream=class{constructor(A={}){const{readable:e,writable:t}=new p;this.readable=e,this.zipWriter=new Ii(t,A),this.pendingAddFileCalls=new n}transform(A){const e=this.zipWriter;let t;const{readable:g,writable:i}=new p({start(A){t=A},flush:()=>{(async()=>{try{await e.close()}catch(A){try{await e.writer.writable.abort(A)}catch{}}})()}});return Ei(this,this.zipWriter.add(A,g),A=>t.error(A)),{readable:this.readable,writable:i}}writable(A){let e;const{readable:t,writable:g}=new p({start(A){e=A}});return Ei(this,this.zipWriter.add(A,t),A=>e.error(A)),g}async close(A,t={}){return await h.all(e.from(this.pendingAddFileCalls)),this.zipWriter.close(A,t)}},A.configure=aA,A.getMimeType=()=>"application/octet-stream",A.terminateWorkers=async()=>{await h.allSettled(We.map(A=>(ke(A),A.terminate())))}});
|
|
1
|
+
((A,e)=>{"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((A="undefined"!=typeof globalThis?globalThis:A||self).zip={})})(this,function(A){"use strict";const{Array:e,Object:t,String:g,Number:i,BigInt:r,Math:s,Date:a,Map:o,Set:n,Response:B,URL:c,Error:l,Uint8Array:I,Uint16Array:E,Uint32Array:w,DataView:d,Blob:C,Promise:u,TextEncoder:h,TextDecoder:F,document:Y,crypto:Q,btoa:D,TransformStream:f,ReadableStream:p,WritableStream:m,CompressionStream:y,DecompressionStream:S,navigator:M,Worker:b}="undefined"!=typeof globalThis?globalThis:this||self;var G=void 0!==Y?Y.currentScript:null;const U=4294967295,W=65535,O=255,T=67324752,K=134695760,R=K,z=33639248,k=101010256,x=101075792,L=117853008,N=22,H=20,J=21589,P=2048,V=16384,X=2048,Z=1024,q="/",v=30,j=new a(2107,11,31),_=new a(1980,0,1),$=void 0,AA=1/0,eA="undefined",tA="function";let gA=2;try{typeof M!=eA&&M.hardwareConcurrency&&(gA=M.hardwareConcurrency)}catch{}const iA={workerURI:"./core/web-worker-wasm.js",wasmURI:"./core/streams/zlib-wasm/zlib-streams.wasm",chunkSize:65536,maxWorkers:gA,terminateWorkerTimeout:5e3,workerStarvationTimeout:5e3,useWebWorkers:!0,useCompressionStream:!0,CompressionStream:typeof y!=eA&&y,DecompressionStream:typeof S!=eA&&S},rA=t.assign({},iA);function sA(){return rA}function aA(A){return s.max(A.chunkSize,64)}function oA(A){const{baseURI:e,chunkSize:t,maxWorkers:g,terminateWorkerTimeout:i,workerStarvationTimeout:r,useCompressionStream:s,useWebWorkers:a,CompressionStream:o,DecompressionStream:n,CompressionStreamZlib:B,DecompressionStreamZlib:c,workerURI:l,wasmURI:I}=A;nA("baseURI",e),nA("wasmURI",I),nA("workerURI",l),nA("chunkSize",t),nA("maxWorkers",g),nA("terminateWorkerTimeout",i),nA("workerStarvationTimeout",r),nA("useCompressionStream",s),nA("useWebWorkers",a),nA("CompressionStream",o),nA("DecompressionStream",n),nA("CompressionStreamZlib",B),nA("DecompressionStreamZlib",c)}function nA(A,e){e!==$&&(rA[A]=e)}const BA="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",cA=[[],[],[],[],[],[],[],[]];for(let A=0;256>A;A++){let e=A;for(let A=0;8>A;A++)e=1&e?e>>>1^3988292384:e>>>1;cA[0][A]=e}for(let A=0;256>A;A++)for(let e=1;8>e;e++){const t=cA[e-1][A];cA[e][A]=t>>>8^cA[0][255&t]}const[lA,IA,EA,wA,dA,CA,uA,hA]=cA;class FA{constructor(A){this.crc=A||-1}append(A){let e=0|this.crc;const t=0|A.length;let g=0;if(t>=8&&A.buffer){const i=new d(A.buffer,A.byteOffset,t),r=t-8;for(;r>=g;g+=8){const A=e^i.getInt32(g,!0),t=i.getInt32(g+4,!0);e=hA[255&A]^uA[A>>>8&255]^CA[A>>>16&255]^dA[A>>>24&255]^wA[255&t]^EA[t>>>8&255]^IA[t>>>16&255]^lA[t>>>24&255]}}for(;t>g;g++)e=e>>>8^lA[255&(e^A[g])];this.crc=e}get(){return~this.crc}}class YA extends f{constructor(){let A;const e=new FA;super({transform(A,t){e.append(A),t.enqueue(A)},flush(){const t=new I(4);new d(t.buffer).setUint32(0,e.get()),A.value=t}}),A=this}}function QA(A){if(typeof h==eA){const e=new I((A=unescape(encodeURIComponent(A))).length);for(let t=0;t<e.length;t++)e[t]=A.charCodeAt(t);return e}return(new h).encode(A)}const DA={concat(A,e){if(0===A.length||0===e.length)return A.concat(e);const t=A[A.length-1],g=DA.getPartial(t);return 32===g?A.concat(e):DA._shiftRight(e,g,0|t,A.slice(0,A.length-1))},bitLength(A){const e=A.length;if(0===e)return 0;const t=A[e-1];return 32*(e-1)+DA.getPartial(t)},clamp(A,e){if(32*A.length<e)return A;const t=(A=A.slice(0,s.ceil(e/32))).length;return e&=31,t>0&&e&&(A[t-1]=DA.partial(e,A[t-1]&2147483648>>e-1,1)),A},partial:(A,e,t)=>32===A?e:(t?0|e:e<<32-A)+1099511627776*A,getPartial:A=>s.round(A/1099511627776)||32,_shiftRight(A,e,t,g){for(void 0===g&&(g=[]);e>=32;e-=32)g.push(t),t=0;if(0===e)return g.concat(A);for(let i=0;i<A.length;i++)g.push(t|A[i]>>>e),t=A[i]<<32-e;const i=A.length?A[A.length-1]:0,r=DA.getPartial(i);return g.push(DA.partial(e+r&31,e+r>32?t:g.pop(),1)),g}},fA={bytes:{fromBits(A){const e=DA.bitLength(A)/8,t=new I(e);let g;for(let i=0;e>i;i++)3&i||(g=A[i/4]),t[i]=g>>>24,g<<=8;return t},toBits(A){const e=[];let t,g=0;for(t=0;t<A.length;t++)g=g<<8|A[t],3&~t||(e.push(g),g=0);return 3&t&&e.push(DA.partial(8*(3&t),g)),e}}},pA=class{constructor(A){const e=this;e.blockSize=512,e._init=[1732584193,4023233417,2562383102,271733878,3285377520],e._key=[1518500249,1859775393,2400959708,3395469782],A?(e._h=A._h.slice(0),e._buffer=A._buffer.slice(0),e._length=A._length):e.reset()}reset(){const A=this;return A._h=A._init.slice(0),A._buffer=[],A._length=0,A}update(A){const e=this;"string"==typeof A&&(A=fA.utf8String.toBits(A));const t=e._buffer=DA.concat(e._buffer,A),g=e._length,i=e._length=g+DA.bitLength(A);if(i>9007199254740991)throw new l("Cannot hash more than 2^53 - 1 bits");const r=new w(t);let s=0;for(let A=e.blockSize+g-(e.blockSize+g&e.blockSize-1);i>=A;A+=e.blockSize)e._block(r.subarray(16*s,16*(s+1))),s+=1;return t.splice(0,16*s),e}finalize(){const A=this;let e=A._buffer;const t=A._h;e=DA.concat(e,[DA.partial(1,1)]);for(let A=e.length+2;15&A;A++)e.push(0);for(e.push(s.floor(A._length/4294967296)),e.push(0|A._length);e.length;)A._block(e.splice(0,16));return A.reset(),t}_f(A,e,t,g){return A>19?A>39?A>59?A>79?void 0:e^t^g:e&t|e&g|t&g:e^t^g:e&t|~e&g}_S(A,e){return e<<A|e>>>32-A}_block(A){const t=this,g=t._h,i=e(80);for(let e=0;16>e;e++)i[e]=A[e];let r=g[0],a=g[1],o=g[2],n=g[3],B=g[4];for(let A=0;79>=A;A++){16>A||(i[A]=t._S(1,i[A-3]^i[A-8]^i[A-14]^i[A-16]));const e=t._S(5,r)+t._f(A,a,o,n)+B+i[A]+t._key[s.floor(A/20)]|0;B=n,n=o,o=t._S(30,a),a=r,r=e}g[0]=g[0]+r|0,g[1]=g[1]+a|0,g[2]=g[2]+o|0,g[3]=g[3]+n|0,g[4]=g[4]+B|0}},mA={importKey:A=>new mA.hmacSha1(fA.bytes.toBits(A)),pbkdf2(A,e,t,g){if(t=t||1e4,0>g||0>t)throw new l("invalid params to pbkdf2");const i=1+(g>>5)<<2;let r,s,a,o,n;const B=new ArrayBuffer(i),c=new d(B);let I=0;const E=DA;for(e=fA.bytes.toBits(e),n=1;(i||1)>I;n++){for(r=s=A.encrypt(E.concat(e,[n])),a=1;t>a;a++)for(s=A.encrypt(s),o=0;o<s.length;o++)r[o]^=s[o];for(a=0;(i||1)>I&&a<r.length;a++)c.setInt32(I,r[a]),I+=4}return B.slice(0,g/8)},hmacSha1:class{constructor(A){const e=this,t=e._hash=pA,g=[[],[]];e._baseHash=[new t,new t];const i=e._baseHash[0].blockSize/32;A.length>i&&(A=(new t).update(A).finalize());for(let e=0;i>e;e++)g[0][e]=909522486^A[e],g[1][e]=1549556828^A[e];e._baseHash[0].update(g[0]),e._baseHash[1].update(g[1]),e._resultHash=new t(e._baseHash[0])}reset(){const A=this;A._resultHash=new A._hash(A._baseHash[0]),A._updated=!1}update(A){this._updated=!0,this._resultHash.update(A)}digest(){const A=this,e=A._resultHash.finalize(),t=new A._hash(A._baseHash[1]).update(e).finalize();return A.reset(),t}encrypt(A){if(this._updated)throw new l("encrypt on already updated hmac called!");return this.update(A),this.digest(A)}}},yA=typeof Q!=eA&&typeof Q.getRandomValues==tA,SA="Invalid password",MA="Invalid signature",bA="zipjs-abort-check-password";function GA(A){if(yA)return Q.getRandomValues(A);throw new l("Crypto API not supported")}const UA=16,WA={name:"PBKDF2"},OA=t.assign({hash:{name:"HMAC"}},WA),TA=t.assign({iterations:1e3,hash:{name:"SHA-1"}},WA),KA=["deriveBits"],RA=[8,12,16],zA=[16,24,32],kA=10,xA=[0,0,0,0],LA=typeof Q!=eA,NA=LA&&Q.subtle,HA=LA&&typeof NA!=eA,JA=fA.bytes,PA=class{constructor(A){const e=this;e._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],e._tables[0][0][0]||e._precompute();const t=e._tables[0][4],g=e._tables[1],i=A.length;let r,s,a,o=1;if(4!==i&&6!==i&&8!==i)throw new l("invalid aes key size");for(e._key=[s=A.slice(0),a=[]],r=i;4*i+28>r;r++){let A=s[r-1];(r%i===0||8===i&&r%i===4)&&(A=t[A>>>24]<<24^t[A>>16&255]<<16^t[A>>8&255]<<8^t[255&A],r%i===0&&(A=A<<8^A>>>24^o<<24,o=o<<1^283*(o>>7))),s[r]=s[r-i]^A}for(let A=0;r;A++,r--){const e=s[3&A?r:r-4];a[A]=4>=r||4>A?e:g[0][t[e>>>24]]^g[1][t[e>>16&255]]^g[2][t[e>>8&255]]^g[3][t[255&e]]}}encrypt(A){return this._crypt(A,0)}decrypt(A){return this._crypt(A,1)}_precompute(){const A=this._tables[0],e=this._tables[1],t=A[4],g=e[4],i=[],r=[];let s,a,o,n;for(let A=0;256>A;A++)r[(i[A]=A<<1^283*(A>>7))^A]=A;for(let B=s=0;!t[B];B^=a||1,s=r[s]||1){let r=s^s<<1^s<<2^s<<3^s<<4;r=r>>8^255&r^99,t[B]=r,g[r]=B,n=i[o=i[a=i[B]]];let c=16843009*n^65537*o^257*a^16843008*B,l=257*i[r]^16843008*r;for(let t=0;4>t;t++)A[t][B]=l=l<<24^l>>>8,e[t][r]=c=c<<24^c>>>8}for(let t=0;5>t;t++)A[t]=A[t].slice(0),e[t]=e[t].slice(0)}_crypt(A,e){if(4!==A.length)throw new l("invalid aes block size");const t=this._key[e],g=t.length/4-2,i=[0,0,0,0],r=this._tables[e],s=r[0],a=r[1],o=r[2],n=r[3],B=r[4];let c,I,E,w=A[0]^t[0],d=A[e?3:1]^t[1],C=A[2]^t[2],u=A[e?1:3]^t[3],h=4;for(let A=0;g>A;A++)c=s[w>>>24]^a[d>>16&255]^o[C>>8&255]^n[255&u]^t[h],I=s[d>>>24]^a[C>>16&255]^o[u>>8&255]^n[255&w]^t[h+1],E=s[C>>>24]^a[u>>16&255]^o[w>>8&255]^n[255&d]^t[h+2],u=s[u>>>24]^a[w>>16&255]^o[d>>8&255]^n[255&C]^t[h+3],h+=4,w=c,d=I,C=E;for(let A=0;4>A;A++)i[e?3&-A:A]=B[w>>>24]<<24^B[d>>16&255]<<16^B[C>>8&255]<<8^B[255&u]^t[h++],c=w,w=d,d=C,C=u,u=c;return i}},VA=class{constructor(A,e){this._prf=A,this._initIv=e,this._iv=e}reset(){this._iv=this._initIv}update(A){return this.calculate(this._prf,A,this._iv)}incWord(A){if(255&~(A>>24))A+=1<<24;else{let e=A>>16&255,t=A>>8&255,g=255&A;255===e?(e=0,255===t?(t=0,255===g?g=0:++g):++t):++e,A=0,A+=e<<16,A+=t<<8,A+=g}return A}incCounter(A){0===(A[0]=this.incWord(A[0]))&&(A[1]=this.incWord(A[1]))}calculate(A,e,t){let g;if(!(g=e.length))return[];const i=DA.bitLength(e);for(let i=0;g>i;i+=4){this.incCounter(t);const g=A.encrypt(t);e[i]^=g[0],e[i+1]^=g[1],e[i+2]^=g[2],e[i+3]^=g[3]}return DA.clamp(e,i)}},XA=mA.hmacSha1;let ZA=LA&&HA&&typeof NA.importKey==tA,qA=LA&&HA&&typeof NA.deriveBits==tA;class vA extends f{constructor({password:A,rawPassword:e,encryptionStrength:g,checkPasswordOnly:i}){super({start(){t.assign(this,{ready:new u(A=>this.resolveReady=A),password:Ae(A,e),strength:g-1,pending:new I})},async transform(A,e){const t=this,{password:g,strength:r,resolveReady:s,ready:a}=t;g?(await(async(A,e,t,g)=>{const i=await $A(A,e,t,te(g,0,RA[e])),r=te(g,RA[e]);if(i[0]!=r[0]||i[1]!=r[1])throw new l(SA)})(t,r,g,te(A,0,RA[r]+2)),A=te(A,RA[r]+2),i?e.error(new l(bA)):s()):await a;const o=new I(A.length-kA-(A.length-kA)%UA);e.enqueue(_A(t,A,o,0,kA,!0))},async flush(A){const{ctr:e,hmac:t,pending:g,ready:i}=this;if(t&&e){await i;const r=te(g,0,g.length-kA),s=te(g,g.length-kA);let a=new I;if(r.length){const A=ie(JA,r);t.update(A);const g=e.update(A);a=ge(JA,g)}const o=te(ge(JA,t.digest()),0,kA);let n=g.length<kA?1:0;for(let A=0;kA>A;A++)n|=o[A]^s[A];if(n)throw new l(MA);A.enqueue(a)}}})}}class jA extends f{constructor({password:A,rawPassword:e,encryptionStrength:g}){let i;super({start(){t.assign(this,{ready:new u(A=>this.resolveReady=A),password:Ae(A,e),strength:g-1,pending:new I})},async transform(A,e){const t=this,{password:g,strength:i,resolveReady:r,ready:s}=t;let a=new I;g?(a=await(async(A,e,t)=>{const g=GA(new I(RA[e]));return ee(g,await $A(A,e,t,g))})(t,i,g),r()):await s;const o=new I(a.length+A.length-A.length%UA);o.set(a,0),e.enqueue(_A(t,A,o,a.length,0))},async flush(A){const{ctr:e,hmac:t,pending:g,ready:r}=this;if(t&&e){await r;let s=new I;if(g.length){const A=e.update(ie(JA,g));t.update(A),s=ge(JA,A)}i.signature=ge(JA,t.digest()).slice(0,kA),A.enqueue(ee(s,i.signature))}}}),i=this}}function _A(A,e,t,g,i,r){const{ctr:s,hmac:a,pending:o}=A;o.length&&(e=ee(o,e));const n=e.length-i;let B;for(t=((A,e)=>{if(e&&e>A.length){const t=A;(A=new I(e)).set(t,0)}return A})(t,g+(n-n%UA)),B=0;n-UA>=B;B+=UA){const A=ie(JA,te(e,B,B+UA));r&&a.update(A);const i=s.update(A);r||a.update(i),t.set(ge(JA,i),B+g)}return A.pending=te(e,B),t}async function $A(A,g,i,r){A.password=null;const s=await(async(A,e,t,g,i)=>{if(!ZA)return mA.importKey(e);try{return await NA.importKey("raw",e,t,!1,i)}catch{return ZA=!1,mA.importKey(e)}})(0,i,OA,0,KA),a=await(async(A,e,t)=>{if(!qA)return mA.pbkdf2(e,A.salt,TA.iterations,t);try{return await NA.deriveBits(A,e,t)}catch{return qA=!1,mA.pbkdf2(e,A.salt,TA.iterations,t)}})(t.assign({salt:r},TA),s,8*(2*zA[g]+2)),o=new I(a),n=ie(JA,te(o,0,zA[g])),B=ie(JA,te(o,zA[g],2*zA[g])),c=te(o,2*zA[g]);return t.assign(A,{keys:{key:n,authentication:B,passwordVerification:c},ctr:new VA(new PA(n),e.from(xA)),hmac:new XA(B)}),c}function Ae(A,e){return e===$?QA(A):e}function ee(A,e){let t=A;return A.length+e.length&&(t=new I(A.length+e.length),t.set(A,0),t.set(e,A.length)),t}function te(A,e,t){return A.subarray(e,t)}function ge(A,e){return A.fromBits(e)}function ie(A,e){return A.toBits(e)}class re extends f{constructor({password:A,rawPassword:e,passwordVerification:g,checkPasswordOnly:i}){super({start(){t.assign(this,{password:A,rawPassword:e,passwordVerification:g}),ne(this,A,e)},transform(A,e){const t=this;if(t.password||t.rawPassword){const e=ae(t,A.subarray(0,12));if(t.password=t.rawPassword=null,0!=(e.at(-1)^t.passwordVerification))throw new l(SA);A=A.subarray(12)}i?e.error(new l(bA)):e.enqueue(ae(t,A))}})}}class se extends f{constructor({password:A,rawPassword:e,passwordVerification:g}){super({start(){t.assign(this,{password:A,rawPassword:e,passwordVerification:g}),ne(this,A,e)},transform(A,e){const t=this;let g,i;if(t.password||t.rawPassword){t.password=t.rawPassword=null;const e=GA(new I(12));e[11]=t.passwordVerification,g=new I(A.length+e.length),g.set(oe(t,e),0),i=12}else g=new I(A.length),i=0;g.set(oe(t,A),i),e.enqueue(g)}})}}function ae(A,e){const t=new I(e.length);for(let g=0;g<e.length;g++)t[g]=ce(A)^e[g],Be(A,t[g]);return t}function oe(A,e){const t=new I(e.length);for(let g=0;g<e.length;g++)t[g]=ce(A)^e[g],Be(A,e[g]);return t}function ne(A,e,g){const i=[305419896,591751049,878082192];if(t.assign(A,{keys:i,crcKey0:new FA(i[0]),crcKey2:new FA(i[2])}),g)for(let e=0;e<g.length;e++)Be(A,g[e]);else for(let t=0;t<e.length;t++)Be(A,e.charCodeAt(t))}function Be(A,e){let[,t]=A.keys;A.crcKey0.append([e]);const g=~A.crcKey0.get();t=Ie(s.imul(Ie(t+le(g)),134775813)+1),A.crcKey2.append([t>>>24]);const i=~A.crcKey2.get();A.keys=[g,t,i]}function ce(A){const e=2|A.keys[2];return le(s.imul(e,1^e)>>>8)}function le(A){return 255&A}function Ie(A){return 4294967295&A}const Ee="Invalid uncompressed size",we="Invalid compressed data";class de extends f{constructor(A,{chunkSize:e,CompressionStreamZlib:t,CompressionStream:g}){super({});const{compressed:i,encrypted:r,useCompressionStream:s,zipCrypto:a,signed:o,level:n,deflate64:B}=A,c=this;let l,I,E,w=super.readable;const C=o&&i&&!B&&(!r||a)&&!(!s||!g);r&&!a||!o||C||(l=new YA,w=Ye(w,l)),i&&(C?(E=new Ce,w=Qe(w,new g("gzip")),w=Ye(w,E)):w=Fe(w,s,{level:n,chunkSize:e},g,t,g)),r&&(a?w=Ye(w,new se(A)):(I=new jA(A),w=Ye(w,I))),he(c,w,()=>{let A;r&&!a&&(A=I.signature),r&&!a||!o||(A=C?E.signature:new d(l.value.buffer).getUint32(0)),c.signature=A})}}class Ce extends f{constructor(){let A,e=10,t=new I(0);super({transform(A,g){if(e){const t=s.min(e,A.length);if(e-=t,!(A=A.subarray(t)).length)return}const i=t.length+A.length;if(8>=i){const e=new I(i);return e.set(t),e.set(A,t.length),void(t=e)}const r=i-8,a=new I(r),o=s.min(r,t.length);a.set(t.subarray(0,o),0),r>o&&a.set(A.subarray(0,r-o),o),g.enqueue(a);const n=new I(8),B=t.length-o;B&&n.set(t.subarray(o),0),n.set(A.subarray(r-o),B),t=n},flush(){const e=new d(t.buffer,t.byteOffset,t.byteLength);A.signature=e.getUint32(0,!0),A.uncompressedSize=e.getUint32(4,!0)}}),A=this}}class ue extends f{constructor(A,{chunkSize:e,DecompressionStreamZlib:t,DecompressionStream:g}){super({});const{zipCrypto:i,encrypted:r,signed:s,signature:a,compressed:o,useCompressionStream:n,deflate64:B}=A;let c,I,E=super.readable;r&&(i?E=Ye(E,new re(A)):(I=new vA(A),E=Ye(E,I))),o&&(E=Fe(E,n,{chunkSize:e,deflate64:B},g,t,g),E=(A=>{const e=A.getReader();return new p({async pull(A){let t;try{t=await e.read()}catch(A){if(A&&A.message)throw A;const e=new l(we);throw e.cause=A,e}const{value:g,done:i}=t;i?A.close():A.enqueue(g)},cancel:A=>e.cancel(A)})})(E)),r&&!i||!s||(c=new YA,E=Ye(E,c)),he(this,E,()=>{if((!r||i)&&s){const A=new d(c.value.buffer);if(a!=A.getUint32(0,!1))throw new l(MA)}})}}function he(A,e,g){e=Ye(e,new f({flush:g})),t.defineProperty(A,"readable",{get:()=>e})}function Fe(A,e,t,g,i,r){const s=e&&g?g:i||r,a=t.deflate64?"deflate64-raw":"deflate-raw";let o;try{o=new s(a,t)}catch(A){if(!e)throw A;if(i)o=new i(a,t);else{if(!r)throw A;o=new r(a,t)}}return Qe(A,o)}function Ye(A,e){return A.pipeThrough(e)}function Qe(A,e){const t=e.writable.getWriter(),g=A.getReader();return(async()=>{try{for(;;){await t.ready;const A=await g.read();if(A.done){await t.close();break}await t.write(A.value)}}catch(A){await(async(A,e)=>{try{await A.abort(e)}catch{}})(t,A),await(async(A,e)=>{try{await A.cancel(e)}catch{}})(g,A)}})(),e.readable}const De="data",fe="deflate",pe="inflate";class me extends f{constructor(A,e){super({});const g=this,{codecType:i}=A;let r;i.startsWith(fe)?r=de:i.startsWith(pe)&&(r=ue),g.outputSize=0;let s=0;const a=new r(A,e),o=super.readable,n=new f({transform(A,e){A&&A.length&&(s+=A.length,e.enqueue(A))},flush(){t.assign(g,{inputSize:s})}}),B=new f({transform(e,t){if(e&&e.length&&(t.enqueue(e),g.outputSize+=e.length,A.outputSize!==$&&g.outputSize>A.outputSize))throw new l(Ee)},flush(){const{signature:A}=a;t.assign(g,{signature:A,inputSize:s})}});t.defineProperty(g,"readable",{get:()=>o.pipeThrough(n).pipeThrough(a).pipeThrough(B)})}}class ye extends f{constructor(A){let e;1>A&&(A=65536),super({transform:(t,g)=>{if(e){const A=new I(e.length+t.length);A.set(e),A.set(t,e.length),t=A,e=null}let i=0;for(;t.length-i>A;)g.enqueue(t.slice(i,i+A)),i+=A;e=i?t.slice(i):t},flush(A){e&&e.length&&A.enqueue(e)}})}}const Se={type:"module"},Me="error";let be,Ge,Ue,We,Oe=!0;try{Oe=typeof structuredClone==tA&&structuredClone(new DOMException("","AbortError")).code!==$}catch{}class Te{constructor(A,{readable:e,writable:g},{options:i,config:r,streamOptions:s,useWebWorkers:a,transferStreams:o,workerURI:n},B){const{signal:c}=s;return t.assign(A,{busy:!0,generation:(A.generation||0)+1,readable:e.pipeThrough(new ye(aA(r))).pipeThrough(new Ke(s),{signal:c}),writable:g,options:t.assign({},i),workerURI:n,transferStreams:o,terminate:()=>new u(e=>{const{worker:t,busy:g}=A;t?(g?A.resolveTerminated=e:(t.terminate(),e()),A.interface=null):e()}),onTaskFinished(){if(A.busy){const{resolveTerminated:e}=A;e&&(A.resolveTerminated=null,A.terminated=!0,A.worker.terminate(),e()),A.busy=!1,B(A)}}}),be===$&&(be=typeof b!=eA),(a&&be?ke:ze)(A,r)}}class Ke extends f{constructor({onstart:A,onprogress:e,size:t,onend:g}){let i=0;super({async start(){A&&await Re(A,t)},async transform(A,g){i+=A.length,e&&await Re(e,i,t),g.enqueue(A)},async flush(){g&&await Re(g,i)}})}}async function Re(A,...e){try{await A(...e)}catch{}}function ze(A,e){return{run:()=>(async({options:A,readable:e,writable:t,onTaskFinished:g},i)=>{let r;try{if(!A.useCompressionStream)try{await void 0}catch{const e=A.codecType.startsWith(fe)?i.CompressionStreamZlib:i.DecompressionStreamZlib;e&&!e.requiresModule||(A.useCompressionStream=!0)}r=new me(A,i),await e.pipeThrough(r).pipeTo(t,{preventClose:!0,preventAbort:!0});const{signature:g,inputSize:s,outputSize:a}=r;return{signature:g,inputSize:s,outputSize:a}}catch(A){throw r&&(A.outputSize=r.outputSize),A}finally{g()}})(A,e)}}function ke(A,e){const{baseURI:g,chunkSize:i}=e;let{wasmURI:r}=e;if(!A.interface){let s;typeof r==tA&&(r=r());try{s=Le(A.workerURI,g,A)}catch{return be=!1,ze(A,e)}t.assign(A,{worker:s,terminated:!1,interface:{run:()=>(async(A,e)=>{let g,i;const r=new u((A,e)=>{g=A,i=e});t.assign(A,{reader:null,writer:null,resolveResult:g,rejectResult:i,result:r});const{readable:s,options:a}=A,{writable:o,closed:n,abortPipe:B}=(A=>{const e=new AbortController,{writable:t,readable:g}=new f,i=g.pipeTo(A,{preventClose:!0,preventAbort:!0,signal:e.signal});return i.catch(()=>{}),{writable:t,closed:i,abortPipe:()=>e.abort()}})(A.writable);let c;try{c=He({type:"start",options:a,config:e,readable:s,writable:o},A)}catch(e){B();try{await n}catch{}throw A.onTaskFinished(),e}c||t.assign(A,{reader:s.getReader(),writer:o.getWriter()});try{const A=await r;return await l(),await n,A}catch(A){await l(),B();try{await n}catch{}throw A}async function l(){if(!c&&!o.locked)try{await o.getWriter().close()}catch{}}})(A,{chunkSize:i,wasmURI:r,baseURI:g})}})}return A.interface}function xe(A){const{worker:e}=A;if(e)try{e.terminate()}catch{}A.interface=null}function Le(A,e,g,i,r=!0){let s,a,o;if(Ue===$||Ge!==A){const t=typeof A==tA;a=t?A(r):A;const n=a.startsWith("data:"),B=a.startsWith("blob:");if(n||B){i===$&&(i=!1),i&&(o=Se);try{s=new b(a,o)}catch(r){if(B)try{c.revokeObjectURL(a)}catch{}if(t&&B)return Le(A,e,g,i,!1);if(i)throw r;return Le(A,e,g,!0,!1)}}else{i===$&&(i=!0),i&&(o=Se);try{a=new c(a,e)}catch{}try{s=new b(a,o)}catch(t){if(i)throw t;return Le(A,e,g,!1,r)}}Ge=A,Ue=a,We=o}else s=new b(Ue,We);return s.addEventListener("message",A=>(async({data:A},e)=>{const{type:g,value:i,messageId:r,result:s,error:a}=A,{reader:o,writer:n,resolveResult:B,rejectResult:c,onTaskFinished:E,generation:w}=e,d=()=>e.generation!=w;try{if(a){const{message:A,stack:e,code:g,name:i,outputSize:r}=a,s=new l(A);t.assign(s,{stack:e,code:g,name:i,outputSize:r}),C(s)}else{if("pull"==g){const{value:A,done:t}=await o.read();d()||He({type:De,value:A,done:t,messageId:r},e)}g==De&&(await n.ready,await n.write(new I(i)),d()||He({type:"ack",messageId:r},e)),"close"==g&&C(null,s)}}catch(a){d()||(xe(e),C(a))}function C(A,e){d()||(A?c(A):B(e),n&&n.releaseLock(),E())}})(A,g)),s.addEventListener(Me,A=>Ne(A,g)),s.addEventListener("messageerror",A=>Ne(A,g)),s}function Ne(A,e){A.preventDefault&&A.preventDefault();const{rejectResult:t,writer:g,onTaskFinished:i}=e;xe(e),t&&(t(A.error||new l(A.message||Me)),g&&g.releaseLock(),i())}function He(A,{worker:e,writer:t,transferStreams:g}){try{const{value:t,readable:i,writable:r}=A,s=[];if(t&&(A.value=t,s.push(A.value.buffer)),g&&Oe?(i&&s.push(i),r&&s.push(r)):A.readable=A.writable=null,s.length)try{return e.postMessage(A,s),!0}catch{Oe=!1,A.readable=A.writable=null,e.postMessage(A)}else e.postMessage(A)}catch(A){throw t&&t.releaseLock(),A}}let Je=[];const Pe=[];let Ve,Xe,Ze=0;async function qe(A,e){const{options:t,config:g}=e,{transferStreams:r,useWebWorkers:s,useCompressionStream:a,compressed:o,signed:n,encrypted:B}=t,{workerURI:c,maxWorkers:l}=g;e.transferStreams=r||r===$;const I=!(o||n||B||e.transferStreams);return e.useWebWorkers=!I&&(s||s===$&&g.useWebWorkers),e.workerURI=e.useWebWorkers&&c?c:$,t.useCompressionStream=a||a===$&&g.useCompressionStream,(await(async()=>{const t=Je.find(A=>!A.busy);if(t)return At(t),new Te(t,A,e,E);if(Je.length<l){const t={indexWorker:Ze};return Ze++,Je.push(t),new Te(t,A,e,E)}return new u(t=>{Pe.push({resolve:t,stream:A,workerOptions:e}),Xe=g.workerStarvationTimeout,ve()})})()).run();function E(A){if(je(),Pe.length){const[{resolve:e,stream:t,workerOptions:g}]=Pe.splice(0,1);e(new Te(A,t,g,E)),ve()}else A.worker?(At(A),((A,e)=>{const{config:t}=e,{terminateWorkerTimeout:g}=t;i.isFinite(g)&&g>=0&&(A.terminated?A.terminated=!1:A.terminateTimeout=setTimeout(async()=>{Je=Je.filter(e=>e!=A);try{await A.terminate()}catch{}},g))})(A,e)):Je=Je.filter(e=>e!=A)}}function ve(){!Ve&&Pe.length&&i.isFinite(Xe)&&Xe>=0&&(Ve=setTimeout(_e,Xe))}function je(){Ve&&(clearTimeout(Ve),Ve=null)}function _e(){if(Ve=null,Pe.length){const[{resolve:A,stream:e,workerOptions:g}]=Pe.splice(0,1),i=t.assign({},g,{useWebWorkers:!1,workerURI:$});A(new Te({},e,i,$e)),ve()}}function $e(){je(),ve()}function At(A){const{terminateTimeout:e}=A;e&&(clearTimeout(e),A.terminateTimeout=null)}const et="HTTP error ",tt="HTTP Range not supported",gt="Content-Range",it="Range",rt="GET",st="bytes",at=65536,ot="writable";class nt{constructor(){this.size=0}init(){this.initialized=!0}}class Bt extends nt{get readable(){const A=this,{chunkSize:e=at}=A,t=new p({start(){this.chunkOffset=0},async pull(g){const{offset:i=0,size:r,diskNumberStart:a}=t,{chunkOffset:o}=this,n=r===$?e:s.min(e,r-o),B=await Wt(A,i+o,n,a);g.enqueue(B),o+e>r||r===$&&!B.length&&n?g.close():this.chunkOffset+=e}});return t}}class ct extends nt{constructor(){super();const A=this,e=new m({write(e){if(!A.initialized)throw new l("Writer not initialized");return A.writeUint8Array(e)}});t.defineProperty(A,ot,{get:()=>e})}writeUint8Array(){}}class lt extends Bt{constructor(A){super(),t.assign(this,{blob:A,size:A.size})}async readUint8Array(A,e){const t=this,g=A+e,i=A||g<t.size?t.blob.slice(A,g):t.blob;let r=await i.arrayBuffer();return r.byteLength>e&&(r=r.slice(A,g)),new I(r)}}class It extends nt{constructor(A){super();const e=this,g=new f,i=[];A&&i.push(["Content-Type",A]),t.defineProperty(e,ot,{get:()=>g.writable}),e.blob=new B(g.readable,{headers:i}).blob(),e.blob.catch(()=>{})}getData(){return this.blob}}class Et extends Bt{constructor(A,e){super(),dt(this,A,e)}async init(){await Ct(this,pt,Yt),super.init()}readUint8Array(A,e){return ut(this,A,e,pt,Yt)}}class wt extends Bt{constructor(A,e){super(),dt(this,A,e)}async init(){await Ct(this,mt,Qt),super.init()}readUint8Array(A,e){return ut(this,A,e,mt,Qt)}}function dt(A,e,g){const{preventHeadRequest:i,useRangeHeader:r,forceRangeRequests:s,combineSizeEocd:a,fetch:o}=g;delete(g=t.assign({},g)).preventHeadRequest,delete g.useRangeHeader,delete g.forceRangeRequests,delete g.combineSizeEocd,delete g.useXHR,delete g.fetch,t.assign(A,{url:e,options:g,preventHeadRequest:i,useRangeHeader:r,forceRangeRequests:s,combineSizeEocd:a,fetch:o})}async function Ct(A,e,t){const{url:g,preventHeadRequest:r,useRangeHeader:s,forceRangeRequests:a,combineSizeEocd:o}=A;if((A=>{const{baseURI:e}=sA(),{protocol:t}=new c(A,e);return"http:"==t||"https:"==t})(g)&&(s||a)&&(void 0===r||r)){const g=await e(rt,A,ht(A,o?-22:void 0)),r=g.headers.get("Accept-Ranges");if(!(a||r&&r.toLowerCase()==st))throw new l(tt);{if(o){const e=new I(await g.arrayBuffer());206==g.status&&e.length==N&&(A.eocdCache=e)}let r;const s=g.headers.get(gt);if(s){const A=s.trim().split(/\s*\/\s*/);if(A.length){const e=A[1];e&&"*"!=e&&(r=i(e))}}r===$?await ft(A,e,t):A.size=r}}else await ft(A,e,t)}async function ut(A,e,t,g,r){const{useRangeHeader:s,forceRangeRequests:a,eocdCache:o,size:n,options:B}=A;if(s||a){if(o&&e==n-N&&t==N)return o;if(n>e&&0!==t){e+t>n&&(t=n-e);const r=await g(rt,A,ht(A,e,t));if(206!=r.status)throw new l(tt);const s=r.headers.get(gt);if(s){const A=i(s.trim().split(/[\s-]+/)[1]);if(!i.isNaN(A)&&A!=e)throw new l(tt)}const a=new I(await r.arrayBuffer());if(a.length!=t)throw new l(tt);return a}return new I}{const{data:g}=A;return g||await r(A,B),new I(A.data.subarray(e,e+t))}}function ht(A,e=0,g=1){return t.assign({},Ft(A),{[it]:st+"="+(0>e?e:e+"-"+(e+g-1))})}function Ft({options:A}){const{headers:e}=A;if(e)return Symbol.iterator in e?t.fromEntries(e):e}async function Yt(A){await Dt(A,pt)}async function Qt(A){await Dt(A,mt)}async function Dt(A,e){const t=await e(rt,A,Ft(A));A.data=new I(await t.arrayBuffer()),A.size=A.data.length}async function ft(A,e,t){if(A.preventHeadRequest)await t(A,A.options);else{const g=await e("HEAD",A,Ft(A)),r=g.headers.get("Content-Length");r&&!g.headers.get("Content-Encoding")?A.size=i(r):await t(A,A.options)}}async function pt(A,{fetch:e=fetch,options:g,url:i},r){const s=await e(i,t.assign({},g,{method:A,headers:r}));if(400>s.status)return s;throw 416==s.status?new l(tt):new l(et+(s.statusText||s.status))}function mt(A,{url:e},g){return new u((i,r)=>{const s=new XMLHttpRequest;if(s.addEventListener("load",()=>{if(400>s.status){const A=[];s.getAllResponseHeaders().trim().split(/[\r\n]+/).forEach(e=>{const t=e.trim().split(/\s*:\s*/);t[0]=t[0].trim().replace(/^[a-z]|-[a-z]/g,A=>A.toUpperCase()),A.push(t)}),i({status:s.status,arrayBuffer:()=>s.response,headers:new o(A)})}else r(416==s.status?new l(tt):new l(et+(s.statusText||s.status)))},!1),s.addEventListener("error",A=>r(A.detail?A.detail.error:new l("Network error")),!1),s.open(A,e),g)for(const A of t.entries(g))s.setRequestHeader(A[0],A[1]);s.responseType="arraybuffer",s.send()})}class yt extends Bt{constructor(A,e={}){super(),t.assign(this,{url:A,reader:e.useXHR&&!e.fetch?new wt(A,e):new Et(A,e)})}set size(A){}get size(){return this.reader.size}async init(){await this.reader.init(),super.init()}readUint8Array(A,e){return this.reader.readUint8Array(A,e)}}class St extends Bt{constructor(A){super(),this.readers=A}async init(){const A=this,{readers:e}=A;A.lastDiskNumber=0,A.lastDiskOffset=0,await u.all(e.map(async(t,g)=>{await Ut(t),g!=e.length-1&&(A.lastDiskOffset+=t.size),A.size+=t.size})),super.init()}async readUint8Array(A,e,t=0){const g=this,{readers:i}=this;let r,a=t;-1==a&&(a=i.length-1);let o=A;for(;i[a]&&o>=i[a].size;)o-=i[a].size,a++;const n=i[a];if(n){const i=n.size;if(o+e>i){const s=i-o;r=new I(e);const a=await Wt(n,o,s);r.set(a,0);const B=await g.readUint8Array(A+s,e-s,t);r.set(B,s),a.length+B.length<e&&(r=r.subarray(0,a.length+B.length))}else r=await Wt(n,o,e)}else r=new I;return g.lastDiskNumber=s.max(a,g.lastDiskNumber),r}}class Mt extends nt{constructor(A,e=4294967295){super();const g=this;let i,r,s;t.assign(g,{diskNumber:0,diskOffset:0,size:0,maxSize:e,availableSize:e});const a=new m({async write(e){const{availableSize:t}=g;if(s)e.length<t?await o(e):(await o(e.subarray(0,t)),await n(),g.diskOffset+=i.size,g.diskNumber++,s=null,g.availableSize=g.maxSize,e.length>t&&await this.write(e.subarray(t)));else{const{value:t,done:a}=await A.next();if(a&&!t)throw new l("Writer iterator completed too soon");i=t,i.size=0,i.maxSize&&(g.maxSize=i.maxSize),g.availableSize=g.maxSize,await Ut(i),r=t.writable,s=r.getWriter(),await this.write(e)}},async close(){s&&(await s.ready,await n())},async abort(A){s&&await s.abort(A)}});async function o(A){const e=A.length;e&&(await s.ready,await s.write(A),i.size+=e,g.availableSize-=e)}async function n(){await s.close()}t.defineProperty(g,ot,{get:()=>a})}}class bt{constructor(A){return e.isArray(A)&&(A=new St(A)),A instanceof p&&(A={readable:A}),A}}class Gt{constructor(A){return A.writable===$&&typeof A.next==tA&&(A=new Mt(A)),A instanceof m&&(A={writable:A}),A.size===$&&(A.size=0),A instanceof Mt||t.assign(A,{diskNumber:0,diskOffset:0,availableSize:AA,maxSize:AA}),A}}async function Ut(A,e){if(!A.init||A.initialized)return u.resolve();await A.init(e)}function Wt(A,e,t,g){return A.readUint8Array(e,t,g)}const Ot="\0☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ".split("");function Tt(A,e){return e&&"cp437"==e.trim().toLowerCase()?(A=>{{let e="";for(let t=0;t<A.length;t++)e+=Ot[A[t]];return e}})(A):new F(e,{ignoreBOM:!0}).decode(A)}const Kt="filename",Rt="rawFilename",zt="comment",kt="rawComment",xt="uncompressedSize",Lt="compressedSize",Nt="offset",Ht="diskNumberStart",Jt="lastModDate",Pt="rawLastModDate",Vt="lastAccessDate",Xt="creationDate",Zt="rawCreationDate",qt="internalFileAttributes",vt="externalFileAttributes",jt="msdosAttributesRaw",_t="msdosAttributes",$t="msDosCompatible",Ag="zip64",eg="encrypted",tg="version",gg="versionMadeBy",ig="zipCrypto",rg="directory",sg="executable",ag="compressionMethod",og="signature",ng="extraField",Bg="unixMode",cg="setuid",lg="setgid",Ig="sticky",Eg=[Kt,Rt,xt,Lt,Jt,Pt,zt,kt,Vt,Xt,Zt,Nt,Ht,qt,vt,jt,_t,$t,Ag,eg,tg,gg,ig,rg,sg,ag,og,ng,"extraFieldUnix","extraFieldInfoZip","uid","gid",Bg,cg,lg,Ig,"bitFlag","filenameUTF8","commentUTF8","rawExtraField","extraFieldZip64","extraFieldUnicodePath","extraFieldUnicodeComment","extraFieldAES","extraFieldNTFS","extraFieldExtendedTimestamp"];class wg{constructor(A){Eg.forEach(e=>this[e]=A[e])}}const dg="password",Cg="rawPassword",ug="passThrough",hg="signal",Fg="checkAmbiguity",Yg="useWebWorkers",Qg="useCompressionStream",Dg="transferStreams",fg="preventClose",pg="offset",mg="strictness",yg="strict",Sg="tolerant",Mg="File format is not recognized",bg="End of central directory not found",Gg="End of Zip64 central directory locator not found",Ug="Central directory header not found",Wg="Local file header not found",Og="Zip64 extra field not found",Tg="File contains encrypted entry",Kg="Encryption method not supported",Rg="Compression method not supported",zg="Split zip file",kg="Overlapping entry found",xg="Ambiguous archive",Lg="utf-8",Ng="cp437",Hg=[[xt,U],[Lt,U],[Nt,U],[Ht,W]],Jg={[W]:{getValue:ci,bytes:4},[U]:{getValue:li,bytes:8}};class Pg{constructor(A,e={}){t.assign(this,{reader:new bt(A),options:e,config:sA(),readRanges:new o})}async*getEntriesGenerator(A={}){const e=this;let{reader:g}=e;const{config:i}=e;if(await Ut(g),g.size!==$&&g.readUint8Array||(g=new lt(await new B(g.readable).blob()),await Ut(g)),g.size<N)throw new l(Mg);g.chunkSize=aA(i);const r=_g(si(e,A,mg),si(e,A,Fg)),a=r==yg,o=r!=Sg,c=((A,e)=>A!==$?A:e==yg?0:e==Sg?1/0:W)(si(e,A,"maxAppendedDataSize"),r),{endOfDirectoryInfo:E,endOfDirectoryReachingEndCount:w}=await(async(A,e,t)=>{const{size:g}=A,i=s.min(g,65557),r=g-i,a=await Wt(A,r,i),o=Ii(a),n={count:$g};let B,c,l=0;for(let t=a.length-N;t>=0;t--)if(ci(o,t)==k){const i=r+t,s=Bi(o,t+20);if(i+N+s==g){const s=await gi(A,o,r,t,i,g,n);if(s==ti){if(B||(B={offset:i,buffer:a.slice(t,t+N).buffer}),l++,!e||l>1)break}else s!=ei||c||(c={offset:i,buffer:a.slice(t,t+N).buffer})}}return B||(B=c),B||(B=await(async(A,e,t)=>{const{size:g}=A,i=s.min(g,e==1/0?g:65557+e),r=g-i,a=await Wt(A,r,i),o=Ii(a);let n,B;for(let e=a.length-N;e>=0;e--)if(ci(o,e)==k){const i=r+e,s={offset:i,buffer:a.slice(e,e+N).buffer};n||(n=s);const c=await gi(A,o,r,e,i,g,t);if(c==ti)return s;c!=ei||B||(B=s)}return B||n})(A,t,n)),{endOfDirectoryInfo:B,endOfDirectoryReachingEndCount:l}})(g,o,c);if(!E)throw ci(Ii(await Wt(g,0,4)))==K?new l(zg):new l(bg);o&&w>1&&ri("multiple end of central directory records");const d=Ii(E);let C=ci(d,12),h=ci(d,16);const F=E.offset,Y=Bi(d,20),Q=F+N+Y;g.size-Q>c&&ri("appended data");let D=Bi(d,4);const p=g.lastDiskNumber||0;let m,y,S=Bi(d,6),M=Bi(d,10),b=0;if(h==U||C==U||M==W||S==W){const A=E.offset<H?new I:await Wt(g,E.offset-H,H),e=Ii(A);if(A.length==H&&ci(e,0)==L){h=li(e,8);let A=await Wt(g,h,56,-1),t=Ii(A);const i=E.offset-H-56-(g.lastDiskOffset||0);if((56>A.length||ci(t,0)!=x)&&h!=i&&i>=0){const e=h;h=i,h>e&&(b=h-e),A=await Wt(g,h,56,-1),t=Ii(A)}if(56>A.length||ci(t,0)!=x)throw new l(Gg);y=!0,D==W?D=ci(t,16):a&&D!=ci(t,16)&&ri("mismatched zip64 end of central directory record"),S==W?S=ci(t,20):a&&S!=ci(t,20)&&ri("mismatched zip64 end of central directory record"),M==W?M=li(t,32):a&&M!=li(t,32)&&ri("mismatched zip64 end of central directory record"),C==U?C=li(t,40):a&&C!=li(t,40)&&ri("mismatched zip64 end of central directory record"),h=li(t,48)+b}}const G=C,T=E.offset-(y?76:0);if(h<g.size||(b=g.size-h-C-N,h=g.size-C-N),p!=D)throw new l(zg);if(0>h)throw new l(Mg);let R=0,J=await Wt(g,h,C,S),P=Ii(J);if(C){if(4>J.length)throw new l(Mg);const A=T-C-(g.lastDiskOffset||0);if(h!=A&&S==D){let e=!(ci(P,R)==z);if(e||0>A||A+4>g.size||(e=ci(Ii(await Wt(g,A,4,S)),0)==z),e){const e=h;h=A,h>e&&(b+=h-e),J=await Wt(g,h,C,S),P=Ii(J)}}}const v=T-h-(g.lastDiskOffset||0);if(C==v||0>v||S!=D||(C=v,J=await Wt(g,h,C,S),P=Ii(J)),0>h||h>=g.size)throw new l(Mg);m=h;const j=si(e,A,"filenameEncoding"),_=si(e,A,"commentEncoding"),AA=a?new n:$;let eA;for(let r=0;M>r;r++){const o=new Vg(g,i,e.options);if(R+46>J.length||ci(P,R)!=z)throw new l(Ug);Xg(o,P,R+6);const n=!!o.bitFlag.languageEncodingFlag,c=R+46,I=c+o.filenameLength,E=I+o.extraFieldLength,w=Bi(P,R+4),d=!(w>>8),C=w>>8==3,h=J.subarray(c,I),F=Bi(P,R+32),Y=E+F,Q=J.subarray(E,Y),D=n,p=n,y=ci(P,R+38),S=y&O,G={readOnly:!!(1&S),hidden:!!(2&S),system:!!(4&S),directory:!!(16&S),archive:!!(32&S)},U=ci(P,R+42),T=si(e,A,"decodeText")||Tt,K=D?Lg:j||Ng,k=p?Lg:_||Ng;let x=T(h,K);x===$&&(x=Tt(h,K));let L=T(Q,k);L===$&&(L=Tt(Q,k)),t.assign(o,{index:r,versionMadeBy:w,msDosCompatible:d,compressedSize:0,uncompressedSize:0,commentLength:F,offset:U,diskNumberStart:Bi(P,R+34),internalFileAttributes:Bi(P,R+36),externalFileAttributes:y,msdosAttributesRaw:S,msdosAttributes:G,rawFilename:h,filenameUTF8:D,commentUTF8:p,rawExtraField:J.subarray(I,E),rawComment:Q,filename:x,comment:L}),Zg(o,o,P,R+6),o.offset+=b,m=s.min(o.offset,m),a&&(AA.has(o.filename)&&(eA=!0),AA.add(o.filename));const N=o.externalFileAttributes>>16&W;o.unixMode===$&&16877&N&&(o.unixMode=N);const H=!!(o.unixMode&X),v=!!(o.unixMode&Z),tA=!!(512&o.unixMode),gA=o.unixMode!==$?!!(73&o.unixMode):C&&!!(73&N),iA=o.unixMode!==$&&(61440&o.unixMode)==V,rA=(61440&N)==V;t.assign(o,{setuid:H,setgid:v,sticky:tA,unixExternalUpper:N,internalFileAttribute:o.internalFileAttributes,externalFileAttribute:o.externalFileAttributes,executable:gA,directory:iA||rA||d&&G.directory||o.filename.endsWith(q)&&!o.uncompressedSize,zipCrypto:o.encrypted&&!o.extraFieldAES});const sA=new wg(o);sA.getData=(A,t)=>o.getData(A,sA,e.readRanges,t),sA.arrayBuffer=async A=>{const t=new f,[g]=await u.all([new B(t.readable).arrayBuffer(),o.getData(t,sA,e.readRanges,A)]);return g},R=Y;const{onprogress:aA}=A;if(aA)try{await aA(r+1,M,new wg(o))}catch{}yield sA}a&&R!=G&&ri("trailing central directory data"),eA&&ri("duplicate filename"),a&&(b||M&&m>0)&&ri("prepended data");const tA=si(e,A,"extractPrependedData"),gA=si(e,A,"extractAppendedData");return tA&&(e.prependedData=m>0?await Wt(g,0,m):new I),e.comment=Y?await Wt(g,F+N,Y):new I,gA&&(e.appendedData=Q<g.size?await Wt(g,Q,g.size-Q):new I),!0}async getEntries(A={}){const e=[];for await(const t of this.getEntriesGenerator(A))e.push(t);return e}async close(){}}class Vg{constructor(A,e,g){t.assign(this,{reader:A,config:e,options:g})}async getData(A,e,g,i={}){const r=this,{reader:a,index:o,offset:n,diskNumberStart:B,extraFieldAES:c,extraFieldZip64:E,compressionMethod:w,config:d,bitFlag:C,signature:u,rawLastModDate:h,uncompressedSize:F,compressedSize:Y}=r,{dataDescriptor:Q}=C,D=e.localDirectory={},f=await Wt(a,n,v,B),p=Ii(f);let y=si(r,i,dg),S=si(r,i,Cg);const M=si(r,i,ug);if(y=y&&y.length&&y,S=S&&S.length&&S,c&&99!=c.originalCompressionMethod)throw new l(Rg);if(0!=w&&8!=w&&9!=w&&!M)throw new l(Rg);if(f.length<v||ci(p,0)!=T)throw new l(Wg);Xg(D,p,4);const{extraFieldLength:b,filenameLength:G}=D,U=_g(si(r,i,mg),si(r,i,Fg))==yg;let W=new I;if(U&&(G||b)){const A=await Wt(a,n+v,G+b,B);W=A.subarray(0,G),D.rawExtraField=A.subarray(G)}else D.rawExtraField=b?await Wt(a,n+v+G,b,B):new I;Zg(r,D,p,4,!0),U&&((A,e,t)=>{const{rawFilename:g}=A;(t.length!=g.length||t.some((A,e)=>A!=g[e]))&&ri("mismatched local file header (filename)"),(2057&e.rawBitFlag)!=(2057&A.rawBitFlag)&&ri("mismatched local file header (general purpose bit flag)"),e.compressionMethod!=A.compressionMethod&&ri("mismatched local file header (compression method)"),e.bitFlag.dataDescriptor||!(e.signature||e.compressedSize||e.uncompressedSize)||e.signature==A.signature&&e.compressedSize==A.compressedSize&&e.uncompressedSize==A.uncompressedSize||ri("mismatched local file header (signature or sizes)")})(r,D,W);const{lastAccessDate:K,creationDate:z}=D;K&&(e.lastAccessDate=K),z&&(e.creationDate=z);const k=r.encrypted&&D.encrypted&&!M,x=k&&!c;if(M||(e.zipCrypto=x),k){if(!x&&c.strength===$)throw new l(Kg);if(!y&&!S)throw new l(Tg)}const L=n+v+G+b,N=Y,H=a.readable;t.assign(H,{diskNumberStart:B,offset:L,size:N});const J=si(r,i,hg),P=si(r,i,"checkPasswordOnly");let V=si(r,i,"checkOverlappingEntry");const X=si(r,i,"checkOverlappingEntryOnly");X&&(V=!0);const{onstart:Z,onprogress:q,onend:j}=i,_=9==w;let AA=si(r,i,Qg);_&&(AA=!1);const eA={options:{codecType:pe,password:y,rawPassword:S,zipCrypto:x,encryptionStrength:c&&c.strength,signed:si(r,i,"checkSignature")&&!M,passwordVerification:x&&(Q?h>>>8&O:u>>>24&O),outputSize:M?Y:F,signature:u,compressed:0!=w&&!M,encrypted:k,useWebWorkers:si(r,i,Yg),useCompressionStream:AA,transferStreams:si(r,i,Dg),deflate64:_,checkPasswordOnly:P},config:d,streamOptions:{signal:J,size:N,onstart:Z,onprogress:q,onend:j}};let tA;V&&await(async({reader:A,fileEntry:e,index:t,offset:g,diskNumberStart:i,signature:r,compressedSize:a,uncompressedSize:o,dataOffset:n,dataDescriptor:B,extraFieldZip64:c,readRanges:I})=>{let E=0;if(i&&A.readers)for(let e=0;e<s.min(i,A.readers.length);e++)E+=A.readers[e].size;let w=0;if(B&&(w=c?20:12),w){const t=await Wt(A,n+a,w+4,i);if(t.length==w+4&&ci(Ii(t),0)==R){const A=ci(Ii(t),4);let g,i;c?(g=li(Ii(t),8),i=li(Ii(t),16)):(g=ci(Ii(t),8),i=ci(Ii(t),12)),(e.encrypted&&!e.zipCrypto||A==r)&&g==a&&i==o&&(w+=4)}}const d={start:E+g,end:E+n+a+w,fileEntry:e};for(const[A,e]of I)if(A!=t&&d.start<e.end&&e.start<d.end){const A=new l(kg);throw A.overlappingEntry=e.fileEntry,A}I.set(t,d)})({reader:a,fileEntry:e,index:o,offset:n,diskNumberStart:B,signature:u,compressedSize:Y,uncompressedSize:F,dataOffset:L,dataDescriptor:Q||D.bitFlag.dataDescriptor,extraFieldZip64:E||D.extraFieldZip64,readRanges:g});try{if(!X){P&&(A=new m),A=new Gt(A),await Ut(A,M?Y:F),({writable:tA}=A);const{outputSize:e}=await qe({readable:H,writable:tA},eA);if(A.size+=e,e!=(M?Y:F))throw new l(Ee)}}catch(e){if(e.outputSize!==$&&(A.size+=e.outputSize),!P||e.message!=bA)throw e}finally{si(r,i,fg)||!tA||tA.locked||await tA.getWriter().close()}return P||X?$:A.getData?A.getData():tA}}function Xg(A,e,g){const i=A.rawBitFlag=Bi(e,g+2),r=!(1&~i),s=ci(e,g+6);t.assign(A,{encrypted:r,version:Bi(e,g),bitFlag:{level:(6&i)>>1,dataDescriptor:!(8&~i),languageEncodingFlag:(i&P)==P},rawLastModDate:s,lastModDate:ai(s),filenameLength:Bi(e,g+22),extraFieldLength:Bi(e,g+24)})}function Zg(A,e,g,i,r){const{rawExtraField:s}=e,n=e.extraField=new o,B=Ii(new I(s));let c=0;try{for(;c<s.length;){const A=Bi(B,c),e=Bi(B,c+2);n.set(A,{type:A,data:s.slice(c+4,c+4+e)}),c+=4+e}}catch{}const E=Bi(g,i+4);t.assign(e,{signature:ci(g,i+10),compressedSize:ci(g,i+14),uncompressedSize:ci(g,i+18)});const w=n.get(1);w&&(((A,e)=>{e.zip64=!0;const t=Ii(A.data),g=Hg.filter(([A,t])=>e[A]==t),i=g.reduce((A,[,e])=>A+Jg[e].bytes,0);if(A.data.length<i)throw new l(Og);for(let i=0,r=0;i<g.length;i++){const[s,a]=g[i],o=Jg[a];e[s]=A[s]=o.getValue(t,r),r+=o.bytes}})(w,e),e.extraFieldZip64=w);const d=n.get(28789);d&&(qg(d,Kt,Rt,e,A),e.extraFieldUnicodePath=d);const C=n.get(25461);C&&(qg(C,zt,kt,e,A),e.extraFieldUnicodeComment=C);const u=n.get(39169);u&&u.data.length>=7?(((A,e,g)=>{const i=Ii(A.data),r=ni(i,4);t.assign(A,{vendorVersion:ni(i,0),vendorId:ni(i,2),strength:r,originalCompressionMethod:g,compressionMethod:Bi(i,5)}),e.compressionMethod=A.compressionMethod})(u,e,E),e.extraFieldAES=u):e.compressionMethod=E;const h=n.get(10);h&&(((A,e)=>{const g=Ii(A.data);let i,r=4;try{for(;r<A.data.length&&!i;){const e=Bi(g,r),t=Bi(g,r+2);1==e&&(i=A.data.slice(r+4,r+4+t)),r+=4+t}}catch{}try{if(i&&24==i.length){const g=Ii(i),r=g.getBigUint64(0,!0),s=g.getBigUint64(8,!0),a=g.getBigUint64(16,!0);t.assign(A,{rawLastModDate:r,rawLastAccessDate:s,rawCreationDate:a});const o={lastModDate:oi(r),lastAccessDate:oi(s),creationDate:oi(a)};t.assign(A,o),t.assign(e,o)}}catch{}})(h,e),e.extraFieldNTFS=h);const F=n.get(30805);if(F)vg(F,e,!1),e.extraFieldUnix=F;else{const A=n.get(30837);A&&(vg(A,e,!0),e.extraFieldInfoZip=A)}const Y=n.get(J);Y&&(((A,e,t)=>{if(!A.data.length)return;const g=Ii(A.data),i=ni(g,0),r=[],s=[];t?(1&~i||(r.push(Jt),s.push(Pt)),2&~i||(r.push(Vt),s.push("rawLastAccessDate")),4&~i||(r.push(Xt),s.push(Zt))):5>A.data.length||(r.push(Jt),s.push(Pt));let o=1;r.forEach((t,i)=>{if(A.data.length>=o+4){const r=ci(g,o);e[t]=A[t]=new a(1e3*(0|r));const n=s[i];A[n]=r}o+=4})})(Y,e,r),e.extraFieldExtendedTimestamp=Y);const Q=n.get(6534);Q&&(e.extraFieldUSDZ=Q)}function qg(A,e,g,i,r){if(5>A.data.length)return void(A.valid=!1);const s=Ii(A.data),a=new FA;a.append(r[g]);const o=Ii(new I(4));o.setUint32(0,a.get(),!0);const n=ci(s,1);t.assign(A,{version:ni(s,0),[e]:Tt(A.data.subarray(5)),valid:!r.bitFlag.languageEncodingFlag&&n==ci(o,0)}),A.valid&&(i[e]=A[e],i[e+"UTF8"]=!0)}function vg(A,e,g){try{const i=Ii(new I(A.data));let r,s;if(g){let e=0;const g=ni(i,e++),a=ni(i,e++);r=jg(A.data.subarray(e,e+a)),e+=a;const o=ni(i,e++);s=jg(A.data.subarray(e,e+o)),t.assign(A,{version:g,uid:r,gid:s})}else 4>A.data.length||(r=Bi(i,0),s=Bi(i,2),t.assign(A,{uid:r,gid:s}));r!==$&&(e.uid=r),s!==$&&(e.gid=s)}catch{}}function jg(A){const e=new I(4);return e.set(A,0),new d(e.buffer,e.byteOffset,4).getUint32(0,!0)}function _g(A,e){return A===$?e?yg:"balanced":A}const $g=64,Ai=0,ei=1,ti=2;async function gi(A,e,t,g,i,r,s){const a=Bi(e,g+10),o=ci(e,g+12),n=ci(e,g+16);if(a==W||o==U||n==U)return await ii(A,e,t,i-H,r,s)==L?ti:Ai;if(!a&&!o)return ei;for(const g of[i-o,n])if(await ii(A,e,t,g,r,s)==z)return ti;return Ai}async function ii(A,e,t,g,i,r){return 0>g||g+4>i?$:t>g?r.count>0?(r.count--,ci(Ii(await Wt(A,g,4)),0)):$:ci(e,g-t)}function ri(A){const e=new l(xg);throw e.reason=A,e}function si(A,e,t){return e[t]===$?A.options[t]:e[t]}function ai(A){const e=(4294901760&A)>>16,t=A&W;try{return new a(1980+((65024&e)>>9),((480&e)>>5)-1,31&e,(63488&t)>>11,(2016&t)>>5,2*(31&t),0)}catch{}}function oi(A){return new a(i(A/r(1e4)-r(116444736e5)))}function ni(A,e){return A.getUint8(e)}function Bi(A,e){return A.getUint16(e,!0)}function ci(A,e){return A.getUint32(e,!0)}function li(A,e){return i(A.getBigUint64(e,!0))}function Ii(A){return new d(A.buffer,A.byteOffset,A.byteLength)}const Ei="File already exists",wi="Zip file comment exceeds 64KB",di="File entry comment exceeds 64KB",Ci="File entry name exceeds 64KB",ui="Version exceeds 65535",hi="The strength must equal 1, 2, or 3",Fi="Extra field type exceeds 65535",Yi="Extra field data exceeds 64KB",Qi=-2147483648,Di=2147483647,fi="Zip64 is not supported (set the 'zip64' option to 'true')",pi="Undefined uncompressed size",mi="Undefined reader",yi="Zip file not empty",Si=new I([7,0,2,0,65,69,3,0,0]),Mi="infozip",bi="unix";let Gi=0;const Ui=[];class Wi{constructor(A,e={}){const g=(A=new Gt(A)).availableSize!==$&&A.availableSize>0&&A.availableSize!==AA&&A.maxSize!==$&&A.maxSize>0&&A.maxSize!==AA;t.assign(this,{writer:A,addSplitZipSignature:g,options:e,config:sA(),files:new o,filenames:new n,offset:e[pg]===$?A.size||A.writable.size||0:e[pg],initialOffset:e[pg]===$?0:e[pg]-(A.size||A.writable.size||0),pendingAddFileCalls:new n,bufferedWrites:0,lastFileEntry:$})}async prependZip(A){if(this.filenames.size)throw new l(yi);A=new bt(A),await Ut(A);const e=new Pg(A.readable),g=await e.getEntries();await e.close(),await Ut(this.writer),await A.readable.pipeTo(this.writer.writable,{preventClose:!0,preventAbort:!0}),this.writer.size=this.offset=A.size,this.filenames=new n(g.map(A=>A.filename)),this.files=new o(g.map(A=>{const{version:e,rawLastModDate:g,lastAccessDate:i,creationDate:r,rawFilename:s,bitFlag:a,encrypted:o,uncompressedSize:n,compressedSize:B,diskOffset:c,diskNumber:l,zip64:E}=A;let{compressionMethod:w,rawExtraFieldZip64:d,rawExtraFieldAES:C,rawExtraFieldExtendedTimestamp:u,rawExtraFieldNTFS:h,rawExtraFieldUnix:F,rawExtraField:Y}=A;const{level:Q,languageEncodingFlag:D,dataDescriptor:f}=a;d=d||new I,C=C||new I,u=u||new I,h=h||new I,F=F||new I,Y=Y||new I,A.extraFieldAES&&(w=99);const p=ji(d,C,u,h,F,Y),m=E&&n>=U,y=E&&B>=U,S=-7&$i(Q,D,f,o,w)|Q<<1,{headerArray:M,headerView:b}=_i({version:e,bitFlag:S,compressionMethod:w,uncompressedSize:n,compressedSize:B,rawLastModDate:g,rawFilename:s,zip64CompressedSize:y,zip64UncompressedSize:m,extraFieldLength:p}),{signature:G}=A;return G!==$&&Xi(b,10,G),t.assign(A,{zip64UncompressedSize:m,zip64CompressedSize:y,zip64Offset:E&&this.offset-c>=U,zip64DiskNumberStart:E&&l>=W,rawExtraFieldZip64:d,rawExtraFieldAES:C,rawExtraFieldExtendedTimestamp:u,rawExtraFieldNTFS:h,rawExtraFieldUnix:F,rawExtraField:Y,extendedTimestamp:u.length>0||h.length>0,extraFieldExtendedTimestampFlag:1+(i?2:0)+(r?4:0),headerArray:M,headerView:b}),[A.filename,A]}))}async add(A="",e,g={}){const i=this;g=t.assign({},g);const{pendingAddFileCalls:s,config:o}=i;let n,B;Gi<o.maxWorkers?Gi++:await new u(A=>Ui.push(A));try{if(A=A.trim(),Ji(i,g,rg)&&!A.endsWith(q)&&(A+=q),i.filenames.has(A))throw new l(Ei);return i.filenames.add(A),B=!0,n=(async(A,e,g,i)=>{const s=((A,e,t)=>{e=e.trim();let g=Ji(A,t,$t),i=Ji(A,t,gg,g?20:768);const r=Ji(A,t,sg),s=Ji(A,t,"uid"),a=Ji(A,t,"gid");let o=Ji(A,t,Bg),n=Ji(A,t,"unixExtraFieldType"),B=Ji(A,t,cg),c=Ji(A,t,lg),I=Ji(A,t,Ig);if(s!==$&&(0>s||s>U))throw new l("Invalid uid (must be integer 0..2^32-1)");if(a!==$&&(0>a||a>U))throw new l("Invalid gid (must be integer 0..2^32-1)");if(o!==$&&(0>o||o>W))throw new l("Invalid UNIX mode (must be integer 0..65535)");if(n!==$&&n!==Mi&&n!==bi)throw new l("Invalid unixExtraFieldType (must be 'infozip' or 'unix')");if(n===bi&&(s!==$&&s>W||a!==$&&a>W))throw new l("uid/gid must be 0..65535 for unixExtraFieldType 'unix' (use 'infozip' for larger ids)");n!==$||s===$&&a===$||(n=Mi);let E=Ji(A,t,jt),w=Ji(A,t,_t);const d=E!==$||w!==$;if(s!==$||a!==$||o!==$||n?(g=!1,i=i&W|768):d&&(g=!0,i&=O),E!==$&&(0>E||E>O))throw new l("Invalid msdosAttributesRaw (must be integer 0..255)");if(w&&"object"!=typeof w)throw new l("Invalid msdosAttributes (must be an object with boolean flags)");if(i>W)throw new l(ui);let C=Ji(A,t,vt,0);!t[rg]&&e.endsWith(q)&&(t[rg]=!0);const u=Ji(A,t,rg);let h;return u?(e.endsWith(q)||(e+=q),0===C&&(C=16,g||(C|=16877<<16))):g||0!==C||(C=r?493<<16:27525120),g||(h=C>>16&W,o=o===$?h:o&W,B?o|=X:B=!!(o&X),c?o|=Z:c=!!(o&Z),I?o|=512:I=!!(512&o),u&&(o|=V),C=(o&W)<<16|C&O),({msdosAttributesRaw:E,msdosAttributes:w}=((A,e)=>{if(A!==$)A&=O;else if(e!==$){const{readOnly:t,hidden:g,system:i,directory:r,archive:s}=e;let a=0;t&&(a|=1),g&&(a|=2),i&&(a|=4),r&&(a|=16),s&&(a|=32),A=a&O}return e===$&&(e={readOnly:!!(1&A),hidden:!!(2&A),system:!!(4&A),directory:!!(16&A),archive:!!(32&A)}),{msdosAttributesRaw:A,msdosAttributes:e}})(E,w)),d&&(C=C&U|E&O),{name:e,resolvedOptions:{versionMadeBy:i,msDosCompatible:g,externalFileAttributes:C,unixExternalUpper:h,uid:s,gid:a,unixMode:o,unixExtraFieldType:n,setuid:B,setgid:c,sticky:I,msdosAttributesRaw:E,msdosAttributes:w}}})(A,e,i);({name:e}=s);const o=((A,e,t)=>{const g=Ji(A,t,"encodeText",QA);let i=g(e);if(i===$&&(i=QA(e)),ji(i)>W)throw new l(Ci);const r=t[zt]||"";let s=g(r);if(s===$&&(s=QA(r)),ji(s)>W)throw new l(di);const o=Ji(A,t,tg,20);if(o>W)throw new l(ui);const n=Ji(A,t,Jt,new a),B=Ji(A,t,Vt),c=Ji(A,t,Xt),E=Ji(A,t,qt,0),w=Ji(A,t,ug);let d,C;w||(d=Ji(A,t,dg),C=Ji(A,t,Cg));const u=Ji(A,t,"encryptionStrength",3),h=Ji(A,t,ig),F=Ji(A,t,"extendedTimestamp",!0),Y=Ji(A,t,"keepOrder",!0),Q=Ji(A,t,Yg),D=Ji(A,t,Dg,!0),f=Ji(A,t,"bufferedWrite"),p=Ji(A,t,"createTempStream"),m=Ji(A,t,"dataDescriptorSignature",!0),y=Ji(A,t,hg),S=Ji(A,t,"useUnicodeFileNames",!0),M=Ji(A,t,ag);if(!w&&M!==$&&0!==M&&8!==M)throw new l("Compression method not supported");let b=Ji(A,t,"level"),G=Ji(A,t,Qg),U=Ji(A,t,"dataDescriptor");f&&U===$&&(U=!1),(U===$||h)&&(U=!0),b!==$&&6!=b&&(G=!1),G||A.config.CompressionStream!==$||A.config.CompressionStreamZlib!==$||(b=0);const O=Ji(A,t,Ag);if(!h&&(d!==$||C!==$)&&(1>u||u>3))throw new l(hi);let T=new I;const K=t[ng];if(K){let A=0,e=0;K.forEach(e=>A+=4+ji(e)),T=new I(A);const t=vi(T);K.forEach((A,g)=>{if(g>W)throw new l(Fi);if(ji(A)>W)throw new l(Yi);Vi(t,e,g),Vi(t,e+2,ji(A)),qi(T,A,e+4),e+=4+ji(A)})}return{comment:r,resolvedOptions:{rawFilename:i,rawComment:s,version:o,lastModDate:n,lastAccessDate:B,creationDate:c,internalFileAttributes:E,passThrough:w,password:d,rawPassword:C,encryptionStrength:u,zipCrypto:h,extendedTimestamp:F,keepOrder:Y,useWebWorkers:Q,transferStreams:D,bufferedWrite:f,createTempStream:p,dataDescriptorSignature:m,signal:y,useUnicodeFileNames:S,compressionMethod:M,level:b,useCompressionStream:G,dataDescriptor:U,zip64:O,rawExtraField:T}}})(A,e,i),{comment:n}=o,B=i[ng];let c;A.files.set(e,$);try{const a=await(async(A,e,{resolvedOptions:t},g)=>{const{passThrough:i,zipCrypto:r,password:s,rawPassword:a,encryptionStrength:o}=t;let{dataDescriptor:n,zip64:B,level:c,compressionMethod:I}=t,E=0,w=0;if(i){if(!e)throw new l(mi);if(w=g[xt],w===$)throw new l(pi)}const d=!0===B,C=Ji(A,g,eg),u=!!e&&(!!(s&&ji(s)||a&&ji(a))||i&&C);e||(c=0,I=0);const h=u?r?12:16+4*o:0;e&&(e=new bt(e),await Ut(e),i?(g.uncompressedSize=w,E=Pi(w)+h):e.size===$?(n=!0,(B||B===$)&&(B=!0,w=E=4294967296)):(g.uncompressedSize=w=e.size,E=Pi(w)+h));const F=d||w>=U,Y=d||E>=U;if(F||Y){if(!1===B)throw new l(fi);B=!0}return B=B||!1,{reader:e,resolvedOptions:{dataDescriptor:n,zip64:B,zip64UncompressedSize:F,zip64CompressedSize:Y,uncompressedSize:w,level:c,compressionMethod:I,encrypted:u}}})(A,g,o,i);({reader:g}=a);const{diskOffset:n,diskNumber:B}=A.writer,E=(A=>{const{rawFilename:e,lastModDate:t,lastAccessDate:g,creationDate:i,level:r,zip64:s,zipCrypto:a,useUnicodeFileNames:o,dataDescriptor:n,directory:B,rawExtraField:c,encryptionStrength:E,extendedTimestamp:w,passThrough:d,encrypted:C,zip64UncompressedSize:u,zip64CompressedSize:h,uncompressedSize:F}=A;let{version:Y,compressionMethod:Q}=A;const D=!B&&(Q===$?r===$||r>0:0!==Q);let f;const p=d||!D,m=s&&(A.bufferedWrite||!n||!u&&!h||p),y=m||s&&n&&(u||h);if(s&&(u||h)){const A=20,e=Ri(A);if(e.uint16(1),e.uint16(A-4),f=e.array,m&&(e.uint64(F),p)){const A=C?a?12:16+4*E:0;e.uint64(d?0:F+A)}}else f=new I;let S,M,b,G,U;if(C&&!a){const A=Ri(ji(Si)+2);A.uint16(39169),A.bytes(Si),S=A.array,S[8]=E}else S=new I;if(w){const A=Li(t);if(Ni(A)){const e=9+(g?4:0)+(i?4:0),t=Ri(e);G=1+(g?2:0)+(i?4:0),t.uint16(J),t.uint16(e-4),t.uint8(G),t.uint32(A),g&&t.uint32(Hi(Li(g))),i&&t.uint32(Hi(Li(i))),b=t.array}else b=new I;try{const A=xi(t),e=Ri(36);e.uint16(10),e.uint16(32),e.skip(4),e.uint16(1),e.uint16(24),e.uint64(A),e.uint64(xi(g)||A),e.uint64(xi(i)||A),M=e.array}catch{M=new I}}else M=b=new I;try{const{uid:e,gid:t,unixExtraFieldType:g}=A;if(g!=Mi||e===$&&t===$)if(g!=bi||e===$&&t===$)U=new I;else{const A=Ri(8);A.uint16(30805),A.uint16(4),A.uint16((e===$?0:e)&W),A.uint16((t===$?0:t)&W),U=A.array}else{const A=Ki(e),g=Ki(t),i=3+A.length+g.length,r=Ri(4+i);r.uint16(30837),r.uint16(i),r.uint8(1),r.uint8(A.length),r.bytes(A),r.uint8(g.length),r.bytes(g),U=r.array}}catch{U=new I}Q===$&&(Q=D?8:0),s&&(Y=Y>45?Y:45),C&&!a&&(Y=Y>51?Y:51,S[9]=Q,Q=99);const O=y?ji(f):0,K=O+ji(S,b,M,U,c);if(K>W)throw new l(Yi);const{headerArray:R,headerView:z,rawLastModDate:k}=_i({version:Y,bitFlag:$i(r,o,n,C,Q),compressionMethod:Q,uncompressedSize:F,lastModDate:_>t?_:t>j?j:t,rawFilename:e,zip64CompressedSize:h,zip64UncompressedSize:u,extraFieldLength:K}),x=Ri(v+ji(e)+K),L=x.array,N=vi(L);return x.uint32(T),x.bytes(R),x.bytes(e),y&&x.bytes(f),x.bytes(S),x.bytes(b),x.bytes(M),x.bytes(U),x.bytes(c),n&&(h||Xi(N,18,0),u||Xi(N,22,0)),{localHeaderArray:L,localHeaderView:N,headerArray:R,headerView:z,lastModDate:t,rawLastModDate:k,encrypted:C,compressed:D,version:Y,compressionMethod:Q,extraFieldExtendedTimestampFlag:G,rawExtraFieldZip64:new I,localExtraFieldZip64Length:O,rawExtraFieldExtendedTimestamp:b,rawExtraFieldNTFS:M,rawExtraFieldUnix:U,rawExtraFieldAES:S,extraFieldLength:K}})(i=t.assign({},i,s.resolvedOptions,o.resolvedOptions,a.resolvedOptions,{internalFileAttribute:o.resolvedOptions.internalFileAttributes,externalFileAttribute:s.resolvedOptions.externalFileAttributes,signature:i[og],offset:A.offset-n,diskNumberStart:B})),w=(({zip64:A,dataDescriptor:e,dataDescriptorSignature:t})=>{let g,i=new I,r=0,s=A?20:12;return t&&(s+=4),e&&(i=new I(s),g=vi(i),t&&(r=4,Xi(g,0,R))),{dataDescriptorArray:i,dataDescriptorView:g,dataDescriptorOffset:r}})(i),d=ji(E.localHeaderArray,w.dataDescriptorArray);c=await(async(A,e,g,i,s)=>{const{files:a,writer:o}=A,{keepOrder:n,dataDescriptor:B,signal:c}=s,{headerInfo:E}=i,w=A.options.usdz,d=A.lastFileEntry;let C,h,F,Y,Q,D,p,y={},S=0;a.set(e,y),A.lastFileEntry=y;try{let h;n&&(h=d&&d.lock,y.lock=new u(A=>F=A)),s.bufferedWrite||!n||A.writerLocked||A.bufferedWrites||!B?(C=!0,A.bufferedWrites++,p=s.createTempStream?await s.createTempStream():new f($,$,{highWaterMark:AA}),p.size=0,await Ut(o)):(p=o,await M()),await Ut(p);const{diskOffset:G}=o;if(A.addSplitZipSignature){delete A.addSplitZipSignature;const e=new I(4);Xi(vi(e),0,K),await ki(o,e),A.offset+=4}w&&!C&&Ti(i,A.offset-G);const{localHeaderArray:W}=E;C||(await h,await b());const T=o.diskNumber,R=zi(A,o);if(y.diskNumberStart=T,C||(Q=!0,D=o.size,await ki(p,W)),y=await(async(A,e,{diskNumberStart:g,lock:i},s,a,o)=>{const{headerInfo:n,dataDescriptorInfo:B,metadataSize:c}=s,{headerArray:I,headerView:E,lastModDate:w,rawLastModDate:d,encrypted:C,compressed:u,version:h,compressionMethod:F,rawExtraFieldZip64:Y,localExtraFieldZip64Length:Q,rawExtraFieldExtendedTimestamp:D,extraFieldExtendedTimestampFlag:f,rawExtraFieldNTFS:p,rawExtraFieldUnix:m,rawExtraFieldAES:y}=n,{dataDescriptorArray:S}=B,{rawFilename:M,lastAccessDate:b,creationDate:G,password:W,rawPassword:T,level:K,zip64:R,zip64UncompressedSize:z,zip64CompressedSize:k,zipCrypto:x,dataDescriptor:L,directory:N,executable:H,versionMadeBy:J,rawComment:P,rawExtraField:V,useWebWorkers:X,transferStreams:Z,onstart:q,onprogress:v,onend:j,signal:_,encryptionStrength:AA,extendedTimestamp:eA,msDosCompatible:tA,internalFileAttributes:gA,externalFileAttributes:iA,uid:rA,gid:sA,unixMode:oA,setuid:nA,setgid:BA,sticky:cA,unixExternalUpper:lA,msdosAttributesRaw:IA,msdosAttributes:EA,useCompressionStream:wA,passThrough:dA}=o,CA={lock:i,versionMadeBy:J,zip64:R,directory:!!N,executable:!!H,filenameUTF8:!0,rawFilename:M,commentUTF8:!0,rawComment:P,rawExtraFieldZip64:Y,localExtraFieldZip64Length:Q,rawExtraFieldExtendedTimestamp:D,rawExtraFieldNTFS:p,rawExtraFieldUnix:m,rawExtraFieldAES:y,rawExtraField:V,extendedTimestamp:eA,msDosCompatible:tA,internalFileAttributes:gA,externalFileAttributes:iA,diskNumberStart:g,uid:rA,gid:sA,unixMode:oA,setuid:nA,setgid:BA,sticky:cA,unixExternalUpper:lA,msdosAttributesRaw:IA,msdosAttributes:EA};let{signature:uA,uncompressedSize:hA}=o,FA=0;dA||(hA=0);const{writable:YA}=e;if(A){A.chunkSize=aA(a);const t=A.readable,g=A.size,i={options:{codecType:fe,level:K,rawPassword:T,password:W,encryptionStrength:AA,zipCrypto:C&&x,passwordVerification:C&&x&&d>>8&O,signed:!dA,compressed:u&&!dA,encrypted:C&&!dA,useWebWorkers:X,useCompressionStream:wA,transferStreams:Z},config:a,streamOptions:{signal:_,size:g,onstart:q,onprogress:v,onend:j}};try{const A=await qe({readable:t,writable:YA},i);if(FA=A.outputSize,e.size+=FA,dA||(hA=A.inputSize,uA=A.signature),!k&&FA>=U||!z&&hA>=U)throw new l(fi)}catch(A){throw A.outputSize!==$&&(e.size+=A.outputSize),A}}return(({signature:A,compressedSize:e,uncompressedSize:t,headerInfo:g,dataDescriptorInfo:i},{zip64:s,zipCrypto:a,dataDescriptor:o})=>{const{headerView:n,encrypted:B}=g,{dataDescriptorView:c,dataDescriptorOffset:l}=i;B&&!a||A===$||(Xi(n,10,A),o&&Xi(c,l,A)),s?o&&(Zi(c,l+4,r(e)),Zi(c,l+12,r(t))):(Xi(n,14,e),Xi(n,18,t),o&&(Xi(c,l+4,e),Xi(c,l+8,t)))})({signature:uA,compressedSize:FA,uncompressedSize:hA,headerInfo:n,dataDescriptorInfo:B},o),L&&await ki(e,S),t.assign(CA,{uncompressedSize:hA,compressedSize:FA,lastModDate:w,rawLastModDate:d,creationDate:G,lastAccessDate:b,encrypted:C,zipCrypto:x,size:c+FA,compressionMethod:F,version:h,headerArray:I,headerView:E,signature:uA,extraFieldExtendedTimestampFlag:f,zip64UncompressedSize:z,zip64CompressedSize:k}),CA})(g,p,y,i,A.config,s),C||(Q=!1),a.set(e,y),y.filename=e,C){if(await u.all([p.writable.getWriter().close(),h]),await M(),Y=!0,D=o.size,await b(),y.diskNumberStart=o.diskNumber,y.offset=zi(A,o),w){const e=i.metadataSize;Ti(i,A.offset-o.diskOffset),y.size+=i.metadataSize-e}(({rawFilename:A,encrypted:e,zip64:t,localExtraFieldZip64Length:g,signature:i,compressedSize:s,uncompressedSize:a,zip64UncompressedSize:o,zip64CompressedSize:n},B,{dataDescriptor:c})=>{if(c||(e||Xi(B,14,i),n||Xi(B,18,s),o||Xi(B,22,a)),t&&g){const e=v+ji(A)+4;Zi(B,e,r(a)),Zi(B,e+8,r(s))}})(y,E.localHeaderView,s),await ki(o,E.localHeaderArray),await(async(A,e,t)=>{const g=e.writable.getWriter();try{await A.pipeTo(new m({async write(A){var e;await g.ready,await g.write(A),e=ji(A),S+=e}}),{preventClose:!0,preventAbort:!0,signal:t})}finally{g.releaseLock()}})(p.readable,o,c),o.size+=p.size,Y=!1}else y.diskNumberStart=T,y.offset=R;return A.offset+=y.size,y}catch(t){if(Y||Q){if(A.hasCorruptedEntries=!0,t)try{t.corruptedEntry=!0}catch{}A.offset+=o.size-D,C&&(A.offset+=S)}throw a.delete(e),t}finally{if(C&&A.bufferedWrites--,F&&F(),h&&h(),C&&p&&p.dispose)try{await p.dispose()}catch{}}async function M(){A.writerLocked=!0;const{lockWriter:e}=A;A.lockWriter=new u(e=>h=()=>{A.writerLocked=!1,e()}),await e}async function b(){ji(E.localHeaderArray)>o.availableSize&&(o.availableSize=0,await ki(o,new I))}})(A,e,g,{headerInfo:E,dataDescriptorInfo:w,metadataSize:d},i)}catch(t){throw A.files.delete(e),t}return t.assign(c,{name:e,comment:n,extraField:B}),new wg(c)})(i,A,e,g),s.add(n),await n}catch(e){throw B&&i.filenames.delete(A),e}finally{s.delete(n);const A=Ui.shift();A?A():Gi--}}remove(A){const{filenames:e,files:t}=this;if("string"==typeof A&&(A=t.get(A)),A&&A.filename!==$){const{filename:g}=A;if(e.has(g)&&t.has(g))return e.delete(g),t.delete(g),!0}return!1}async close(A=new I,t={}){const{pendingAddFileCalls:g,writer:i}=this,{writable:s}=i;if(ji(A)>W)throw new l(wi);for(;g.size;)await u.allSettled(e.from(g));return await(async(A,t,g)=>{const i=(A=>{let e=0;for(const[,t]of A){const{rawFilename:A,rawExtraFieldAES:g,rawComment:i,rawExtraFieldNTFS:r,rawExtraFieldUnix:s,rawExtraField:a,extendedTimestamp:o,extraFieldExtendedTimestampFlag:n,lastModDate:B,zip64UncompressedSize:c,zip64CompressedSize:E,uncompressedSize:w,compressedSize:d}=t,C=t.offset>=U,u=t.diskNumberStart>=W;let h,F;if(C||u||c||E){const A=4+(c?8:0)+(E?8:0)+(C?8:0)+(u?4:0),e=Ri(A);e.uint16(1),e.uint16(A-4),c&&e.uint64(w),E&&e.uint64(d),C&&e.uint64(t.offset),u&&e.uint32(t.diskNumberStart),h=e.array}else h=new I;t.rawExtraFieldZip64=h,t.zip64Offset=C,t.zip64DiskNumberStart=u;const Y=Li(B);if(o&&Ni(Y)){const A=Ri(9);A.uint16(J),A.uint16(5),A.uint8(n),A.uint32(Y),F=A.array}else F=new I;t.rawExtraFieldExtendedTimestamp=F;const Q=ji(h,g,r,s,F,a);if(Q>W)throw new l(Yi);e+=46+ji(A,i)+Q}return e})(A.files),{cdStartDiskNumber:s,cdStartDiskOffset:a}=await(async(A,t,g)=>{const{files:i,writer:r}=A,s=new I(t);await Ut(r);let a=0,o=0,n=r.diskNumber,B=r.diskOffset;for(const[A,t]of e.from(i.values()).entries()){const{offset:e,rawFilename:c,rawExtraFieldZip64:l,rawExtraFieldAES:E,rawExtraFieldExtendedTimestamp:w,rawExtraFieldNTFS:d,rawExtraFieldUnix:C,rawExtraField:u,rawComment:h,versionMadeBy:F,headerArray:Y,headerView:Q,zip64UncompressedSize:D,zip64CompressedSize:f,zip64DiskNumberStart:p,zip64Offset:m,internalFileAttributes:y,externalFileAttributes:S,diskNumberStart:M,uncompressedSize:b,compressedSize:G}=t,O=ji(l,E,w,d,C,u),T=46+ji(c,h)+O;a+T-o>r.availableSize&&(await ki(r,s.slice(o,a)),o=a,r.availableSize=0,await ki(r,new I)),0==A&&(n=r.diskNumber,B=r.diskOffset),D||Xi(Q,18,b),f||Xi(Q,14,G),(m||p)&&45>t.version&&Vi(Q,0,45);const K=Ri(T);if(K.uint32(z),K.uint16(F),K.bytes(Y.subarray(0,24)),K.uint16(O),K.uint16(ji(h)),K.uint16(p?W:M),K.uint16(y),K.uint32(S),K.uint32(m?U:e),K.bytes(c),K.bytes(l),K.bytes(E),K.bytes(w),K.bytes(d),K.bytes(C),K.bytes(u),K.bytes(h),qi(s,K.array,a),a+=T,g.onprogress)try{await g.onprogress(A+1,i.size,new wg(t))}catch{}}return await ki(r,o?s.slice(o):s),{cdStartDiskNumber:n,cdStartDiskOffset:B}})(A,i,g);await(async(A,e,t,g)=>{const{writer:i}=A,{cdStartDiskNumber:s,cdStartDiskOffset:a}=g;let{directoryDataLength:o}=g,n=A.files.size,B=s,c=A.offset-a-(s?A.initialOffset:0),E=i.diskNumber;i.availableSize<N&&E++;let w=Ji(A,t,Ag);if(!(U>c&&U>o&&W>n&&W>E)){if(!1===w)throw new l(fi);w=!0}const d=ji(e);if(d>W)throw new l(wi);const C=Ri(w?98:N);ji(C.array)+d>i.availableSize&&(i.availableSize=0,await ki(i,new I)),E=i.diskNumber,w&&(C.uint32(x),C.uint64(44),C.uint16(45),C.uint16(45),C.uint32(E),C.uint32(B),C.uint64(n),C.uint64(n),C.uint64(o),C.uint64(c),C.uint32(L),C.uint32(E),C.uint64(r(A.offset)+r(o)-r(i.diskOffset)-r(i.diskNumber?A.initialOffset:0)),C.uint32(E+1),Ji(A,t,"supportZip64SplitFile",!0)&&(E=W,B=W),n=W,c=U,o=U),C.uint32(k),C.uint16(E),C.uint16(B),C.uint16(n),C.uint16(n),C.uint32(o),C.uint32(c),C.uint16(d),await ki(i,C.array),d&&await ki(i,e)})(A,t,g,{cdStartDiskNumber:s,cdStartDiskOffset:a,directoryDataLength:i})})(this,A,t),Ji(this,t,fg)||await s.getWriter().close(),i.getData?i.getData():s}}function Oi(A,e,t){A.pendingAddFileCalls.add(e),e.catch(A=>{try{t(A)}catch{}})}function Ti(A,e){const{headerInfo:t}=A;let g,{localHeaderArray:i,extraFieldLength:r}=t,s=64-(e+ji(i))%64;4>s&&(s+=64);const a=new I(s),o=vi(a);Vi(o,0,6534),Vi(o,2,s-4);const n=i;t.localHeaderArray=i=new I(ji(n)+s),qi(i,n),qi(i,a,ji(n)),g=vi(i),Vi(g,28,r+s),t.localHeaderView=g,A.metadataSize+=s}function Ki(A){if(A===$)return new I;{const e=new I(4);vi(e).setUint32(0,A,!0);let t=4;for(;t>1&&0===e[t-1];)t--;return e.subarray(0,t)}}function Ri(A){const e=new I(A),t=vi(e);let g=0;return{array:e,uint8:A=>{((A,e,t)=>{A.setUint8(e,t)})(t,g,A),g+=1},uint16:A=>{Vi(t,g,A),g+=2},uint32:A=>{Xi(t,g,A),g+=4},uint64:A=>{Zi(t,g,r(A)),g+=8},bytes:A=>{qi(e,A,g),g+=ji(A)},skip:A=>g+=A}}function zi(A,e){return A.offset-e.diskOffset-(e.diskNumber?A.initialOffset:0)}async function ki(A,e){const{writable:t}=A,g=t.getWriter();try{await g.ready,A.size+=ji(e),await g.write(e)}finally{g.releaseLock()}}function xi(A){if(A)return(r(A.getTime())+r(116444736e5))*r(1e4)}function Li(A){return s.floor(A.getTime()/1e3)}function Ni(A){return A>=Qi&&Di>=A}function Hi(A){return s.min(Di,s.max(Qi,A))}function Ji(A,e,t,g){const i=e[t]===$?A.options[t]:e[t];return i===$?g:i}function Pi(A){return A+5*(s.floor(A/16383)+1)}function Vi(A,e,t){A.setUint16(e,t,!0)}function Xi(A,e,t){A.setUint32(e,t,!0)}function Zi(A,e,t){A.setBigUint64(e,t,!0)}function qi(A,e,t){A.set(e,t)}function vi(A){return new d(A.buffer,A.byteOffset,A.byteLength)}function ji(...A){let e=0;return A.forEach(A=>A&&(e+=A.length)),e}function _i({version:A,bitFlag:e,compressionMethod:t,uncompressedSize:g,compressedSize:i,lastModDate:r,rawLastModDate:s,rawFilename:a,zip64CompressedSize:o,zip64UncompressedSize:n,extraFieldLength:B}){const c=Ri(26),l=c.array,I=vi(l);if(c.uint16(A),c.uint16(e),c.uint16(t),s===$){const A=new w(1),e=vi(A);Vi(e,0,(r.getHours()<<6|r.getMinutes())<<5|r.getSeconds()/2),Vi(e,2,(r.getFullYear()-1980<<4|r.getMonth()+1)<<5|r.getDate()),s=A[0]}return c.uint32(s),c.skip(4),o||i!==$?c.uint32(o?U:i):c.skip(4),n||g!==$?c.uint32(n?U:g):c.skip(4),c.uint16(ji(a)),c.uint16(B),{headerArray:l,headerView:I,rawLastModDate:s}}function $i(A,e,t,g,i){let r=0;return e&&(r|=P),t&&(r|=8),8!=i&&9!=i||(0>A||A>3||(r|=6),A>3&&5>=A&&(r|=4),9==A&&(r|=2)),g&&(r|=1),r}const Ar=1048576,er=".zip.js-temp";try{oA({baseURI:void 0===Y&&"undefined"==typeof location?require("url").pathToFileURL(__filename).href:void 0===Y?location.href:G&&"SCRIPT"===G.tagName.toUpperCase()&&G.src||new c("zip-legacy.min.js",Y.baseURI).href})}catch{}oA({workerURI:A=>{const e="text/javascript",t=(A=>{A=(A=>{const e=(A=(A+"").replace(/[^A-Za-z0-9+/=]/g,"")).length,t=[];for(let g=0;e>g;g+=4){const e=BA.indexOf(A[g])<<18|BA.indexOf(A[g+1])<<12|(63&BA.indexOf(A[g+2]))<<6|63&BA.indexOf(A[g+3]);t.push(e>>16&255),"="!==A[g+2]&&t.push(e>>8&255),"="!==A[g+3]&&t.push(255&e)}return new I(t)})(A);let e=new I(1024),t=0;for(let i=0;i<A.length;){const r=A[i++];if(128&r){const s=3+(127&r),a=A[i++]<<8|A[i++],o=t-a;g(t+s);for(let A=0;s>A;A++)e[t++]=e[o+A]}else{const s=r;g(t+s);for(let g=0;s>g&&i<A.length;g++)e[t++]=A[i++]}}return(A=>{let e="";const t=A.length;let g=0;for(;t>g+2;g+=3){const t=A[g]<<16|A[g+1]<<8|A[g+2];e+=BA[t>>18&63]+BA[t>>12&63]+BA[t>>6&63]+BA[63&t]}const i=t-g;if(1===i){const t=A[g]<<16;e+=BA[t>>18&63]+BA[t>>12&63]+"=="}else if(2===i){const t=A[g]<<16|A[g+1]<<8;e+=BA[t>>18&63]+BA[t>>12&63]+BA[t>>6&63]+"="}return e})(new I(e.buffer.slice(0,t)));function g(A){if(e.length<A){let g=2*e.length;for(;A>g;)g*=2;const i=new I(g);i.set(e.subarray(0,t)),e=i}}})("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");if(A){const A=atob(t),g=new C([A],{type:e});return c.createObjectURL(g)}return"data:"+e+";base64,"+t}}),A.BlobReader=lt,A.BlobWriter=It,A.Data64URIReader=class extends Bt{constructor(A){super();let e=A.length;for(;"="==A.charAt(e-1);)e--;const g=A.indexOf(",")+1;t.assign(this,{dataURI:A,dataStart:g,size:s.floor(.75*(e-g))})}readUint8Array(A,e){const{dataStart:t,dataURI:g}=this,i=new I(e),r=4*s.floor(A/3),a=atob(g.substring(r+t,4*s.ceil((A+e)/3)+t)),o=A-3*s.floor(r/4);let n=0;for(let A=o;o+e>A&&A<a.length;A++)i[A-o]=a.charCodeAt(A),n++;return n<i.length?i.subarray(0,n):i}},A.Data64URIWriter=class extends ct{constructor(A){super(),t.assign(this,{data:"data:"+(A||"")+";base64,",pending:[]})}writeUint8Array(A){const e=this;let t,i=e.pending;const r=e.pending.length;for(e.pending="",t=0;t<3*s.floor((r+A.length)/3)-r;t++)i+=g.fromCharCode(A[t]);for(;t<A.length;t++)e.pending+=g.fromCharCode(A[t]);i.length>2?e.data+=D(i):e.pending=i+e.pending}getData(){return this.data+D(this.pending)}},A.ERR_AMBIGUOUS_ARCHIVE=xg,A.ERR_BAD_FORMAT=Mg,A.ERR_CENTRAL_DIRECTORY_NOT_FOUND=Ug,A.ERR_DUPLICATED_NAME=Ei,A.ERR_ENCRYPTED=Tg,A.ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND=Gg,A.ERR_EOCDR_NOT_FOUND=bg,A.ERR_EXTRAFIELD_ZIP64_NOT_FOUND=Og,A.ERR_HTTP_RANGE=tt,A.ERR_INVALID_COMMENT=wi,A.ERR_INVALID_COMPRESSED_DATA=we,A.ERR_INVALID_ENCRYPTION_STRENGTH=hi,A.ERR_INVALID_ENTRY_COMMENT=di,A.ERR_INVALID_ENTRY_NAME=Ci,A.ERR_INVALID_EXTRAFIELD_DATA=Yi,A.ERR_INVALID_EXTRAFIELD_TYPE=Fi,A.ERR_INVALID_PASSWORD=SA,A.ERR_INVALID_SIGNATURE=MA,A.ERR_INVALID_UNCOMPRESSED_SIZE=Ee,A.ERR_INVALID_VERSION=ui,A.ERR_LOCAL_FILE_HEADER_NOT_FOUND=Wg,A.ERR_OVERLAPPING_ENTRY=kg,A.ERR_SPLIT_ZIP_FILE=zg,A.ERR_UNDEFINED_READER=mi,A.ERR_UNDEFINED_UNCOMPRESSED_SIZE=pi,A.ERR_UNSUPPORTED_COMPRESSION=Rg,A.ERR_UNSUPPORTED_ENCRYPTION=Kg,A.ERR_UNSUPPORTED_FORMAT=fi,A.ERR_ZIP_NOT_EMPTY=yi,A.HttpRangeReader=class extends yt{constructor(A,e={}){super(A,t.assign({},e,{useRangeHeader:!0}))}},A.HttpReader=yt,A.Reader=Bt,A.SplitDataReader=St,A.SplitDataWriter=Mt,A.TextReader=class extends lt{constructor(A){super(new C([A],{type:"text/plain"}))}},A.TextWriter=class extends It{constructor(A){super(A),t.assign(this,{encoding:A,utf8:!A||"utf-8"==A.toLowerCase()})}async getData(){const{encoding:A,utf8:e}=this,g=await super.getData();if(g.text&&e)return g.text();{const e=new FileReader;return new u((i,r)=>{t.assign(e,{onload:({target:A})=>i(A.result),onerror:()=>r(e.error)}),e.readAsText(g,A)})}}},A.Uint8ArrayReader=class extends Bt{constructor(A){super(),A=new I(A.buffer,A.byteOffset,A.byteLength),t.assign(this,{array:A,size:A.length})}readUint8Array(A,e){return this.array.slice(A,A+e)}},A.Uint8ArrayWriter=class extends ct{constructor(A){super(),this.defaultBufferSize=A||262144}init(A=0){t.assign(this,{offset:0,array:new I(A>0?A:this.defaultBufferSize)}),super.init()}writeUint8Array(A){const e=this,t=e.offset+A.length;if(t>e.array.length){let A=e.array.length?2*e.array.length:e.defaultBufferSize;for(;t>A;)A*=2;const g=e.array;e.array=new I(A),e.array.set(g)}e.array.set(A,e.offset),e.offset+=A.length}getData(){return this.offset===this.array.length?this.array:this.array.slice(0,this.offset)}},A.Writer=ct,A.ZipReader=Pg,A.ZipReaderStream=class{constructor(A={}){const{readable:e,writable:t}=new f,g=new Pg(e,A).getEntriesGenerator();this.readable=new p({async pull(A){const{done:e,value:t}=await g.next();if(e)return A.close();const i={...t,readable:(()=>{const{readable:A,writable:e}=new f;if(t.getData)return(async()=>{try{await t.getData(e)}catch(A){try{await e.abort(A)}catch{}}})(),A})()};delete i.getData,A.enqueue(i)}}),this.writable=t}},A.ZipWriter=Wi,A.ZipWriterStream=class{constructor(A={}){const{readable:e,writable:t}=new f;this.readable=e,this.zipWriter=new Wi(t,A),this.pendingAddFileCalls=new n}transform(A){const e=this.zipWriter;let t;const{readable:g,writable:i}=new f({start(A){t=A},flush:()=>{(async()=>{try{await e.close()}catch(A){try{await e.writer.writable.abort(A)}catch{}}})()}});return Oi(this,this.zipWriter.add(A,g),A=>t.error(A)),{readable:this.readable,writable:i}}writable(A){let e;const{readable:t,writable:g}=new f({start(A){e=A}});return Oi(this,this.zipWriter.add(A,t),A=>e.error(A)),g}async close(A,t={}){return await u.all(e.from(this.pendingAddFileCalls)),this.zipWriter.close(A,t)}},A.configure=oA,A.createOPFSTempStream=(A={})=>{const{thresholdBytes:e=Ar,directoryName:t=er,getDirectory:g=()=>M.storage.getDirectory()}=A;let i;function r(){return i||(i=u.resolve(g()).then(A=>A.getDirectoryHandle(t,{create:!0}))),i}return async()=>{const A=[];let t,g,i,s,a=0,o=!1;const n=new m({async write(s){o?await i.write(s):(A.push(s),a+=s.length,a>e&&await(async()=>{const e=await r();t=Q.randomUUID(),g=await e.getFileHandle(t,{create:!0}),i=(await g.createWritable()).getWriter(),o=!0;for(const e of A)await i.write(e);A.length=0})())},async close(){i&&(await i.close(),i=null)}});let B=0;return{writable:n,readable:new p({async pull(e){if(o){if(!s){const A=await g.getFile();s=A.stream().getReader()}const{value:A,done:t}=await s.read();t?e.close():e.enqueue(A)}else B<A.length?e.enqueue(A[B++]):e.close()},async cancel(A){s&&await s.cancel(A)}},{highWaterMark:0}),dispose:async()=>{if(i){try{await i.close()}catch{}i=null}if(t){try{const A=await r();await A.removeEntry(t)}catch{}g=t=null}A.length=0}}}},A.getMimeType=()=>"application/octet-stream",A.terminateWorkers=async()=>{await u.allSettled(Je.map(A=>(At(A),A.terminate())))}});
|
package/dist/zip-module.wasm
CHANGED
|
Binary file
|