@zip.js/zip.js 2.8.29 → 2.8.31
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 +35 -0
- package/deno.json +5 -4
- package/dist/zip-core.js +496 -218
- package/dist/zip-core.min.js +1 -1
- package/dist/zip-fs-core.js +398 -195
- package/dist/zip-fs-core.min.js +1 -1
- package/dist/zip-fs-native.js +588 -254
- package/dist/zip-fs-native.min.js +1 -1
- package/dist/zip-fs.js +587 -253
- package/dist/zip-fs.min.js +1 -1
- package/dist/zip-legacy.js +501 -223
- package/dist/zip-legacy.min.js +1 -1
- package/dist/zip-module.wasm +0 -0
- package/dist/zip-native.js +504 -226
- 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 +503 -225
- package/dist/zip.min.js +1 -1
- package/index-native.cjs +588 -254
- package/index-native.min.js +1 -1
- package/index.cjs +587 -253
- package/index.d.cts +2814 -0
- package/index.d.ts +364 -1
- package/index.min.js +1 -1
- package/lib/core/codec-worker.js +0 -10
- package/lib/core/configuration.js +21 -33
- package/lib/core/constants.js +3 -0
- package/lib/core/io.js +11 -19
- package/lib/core/options.js +11 -1
- package/lib/core/streams/aes-crypto-stream.js +16 -20
- package/lib/core/streams/codecs/crc32.js +39 -11
- package/lib/core/streams/common-crypto.js +0 -2
- package/lib/core/streams/zip-crypto-stream.js +12 -16
- package/lib/core/streams/zip-entry-stream.js +69 -19
- package/lib/core/streams/zlib-js/zlib-streams.min.js +1 -1
- package/lib/core/streams/zlib-wasm/zlib-streams-loader.js +1 -3
- package/lib/core/streams/zlib-wasm/zlib-streams.wasm +0 -0
- package/lib/core/util/base64.js +68 -0
- package/lib/core/util/decode-text.js +0 -1
- package/lib/core/util/default-mime-type.js +0 -3
- package/lib/core/util/inflate.js +194 -0
- package/lib/core/util/mime-type.js +26 -22
- package/lib/core/util/opfs-temp-stream.js +139 -0
- package/lib/core/web-worker-inline-native.js +1 -1
- package/lib/core/web-worker-inline-template-native.js +5 -5
- package/lib/core/web-worker-inline-wasm.js +1 -1
- package/lib/core/zip-fs.js +61 -10
- package/lib/core/zip-reader.js +162 -53
- package/lib/core/zip-writer.js +34 -41
- package/lib/core/zlib-streams-inline-template.js +3 -2
- package/lib/core/zlib-streams-inline.js +1 -1
- package/lib/zip-core-base.js +7 -2
- package/package.json +9 -6
- package/reserved-property-names.js +50 -0
- package/lib/core/util/mini-lz.js +0 -198
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:r,Math:s,Date:a,Map:n,Set:o,Response:B,URL:c,Error:l,Uint8Array:I,Uint16Array:C,Uint32Array:E,DataView:w,Blob:d,Promise:u,TextEncoder:h,TextDecoder:F,document:D,crypto:Y,btoa:Q,TransformStream:p,ReadableStream:m,WritableStream:f,CompressionStream:y,DecompressionStream:S,navigator:M,Worker:b}="undefined"!=typeof globalThis?globalThis:this||self;var G=void 0!==D?D.currentScript:null;const W=4294967295,U=65535,O=255,K=67324752,R=134695760,T=R,z=33639248,k=101010256,x=101075792,H=117853008,L=22,N=21589,J=2048,V=16384,Z=2048,P=1024,q="/",X=30,v=new a(2107,11,31),j=new a(1980,0,1),_=void 0,$=1/0,AA="undefined",eA="function";let tA=2;try{typeof M!=AA&&M.hardwareConcurrency&&(tA=M.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 rA(){return iA}function sA(A){return s.max(A.chunkSize,64)}function aA(A){const{baseURI:e,chunkSize:t,maxWorkers:g,terminateWorkerTimeout:i,workerStarvationTimeout:r,useCompressionStream:s,useWebWorkers:a,CompressionStream:n,DecompressionStream:o,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",n),nA("DecompressionStream",o),nA("CompressionStreamZlib",B),nA("DecompressionStreamZlib",c)}function nA(A,e){e!==_&&(iA[A]=e)}const oA="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 lA extends p{constructor(){let A;const e=new cA;super({transform(A,t){e.append(A),t.enqueue(A)},flush(){const t=new I(4);new w(t.buffer).setUint32(0,e.get()),A.value=t}}),A=this}}function IA(A){if(typeof h==AA){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 CA={concat(A,e){if(0===A.length||0===e.length)return A.concat(e);const t=A[A.length-1],g=CA.getPartial(t);return 32===g?A.concat(e):CA._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)+CA.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]=CA.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=CA.getPartial(i);return g.push(CA.partial(e+r&31,e+r>32?t:g.pop(),1)),g}},EA={bytes:{fromBits(A){const e=CA.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(CA.partial(8*(3&t),g)),e}}},wA=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=EA.utf8String.toBits(A));const t=e._buffer=CA.concat(e._buffer,A),g=e._length,i=e._length=g+CA.bitLength(A);if(i>9007199254740991)throw new l("Cannot hash more than 2^53 - 1 bits");const r=new E(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=CA.concat(e,[CA.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],n=g[2],o=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,n,o)+B+i[A]+t._key[s.floor(A/20)]|0;B=o,o=n,n=t._S(30,a),a=r,r=e}g[0]=g[0]+r|0,g[1]=g[1]+a|0,g[2]=g[2]+n|0,g[3]=g[3]+o|0,g[4]=g[4]+B|0}},dA={importKey:A=>new dA.hmacSha1(EA.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,n,o;const B=new ArrayBuffer(i),c=new w(B);let I=0;const C=CA;for(e=EA.bytes.toBits(e),o=1;(i||1)>I;o++){for(r=s=A.encrypt(C.concat(e,[o])),a=1;t>a;a++)for(s=A.encrypt(s),n=0;n<s.length;n++)r[n]^=s[n];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=wA,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)}}},uA=typeof Y!=AA&&typeof Y.getRandomValues==eA,hA="Invalid password",FA="Invalid signature",DA="zipjs-abort-check-password";function YA(A){if(uA)return Y.getRandomValues(A);throw new l("Crypto API not supported")}const QA=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],MA=[16,24,32],bA=10,GA=[0,0,0,0],WA=typeof Y!=AA,UA=WA&&Y.subtle,OA=WA&&typeof UA!=AA,KA=EA.bytes,RA=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,n=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^n<<24,n=n<<1^283*(n>>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,n,o;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,o=i[n=i[a=i[B]]];let c=16843009*o^65537*n^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],n=r[2],o=r[3],B=r[4];let c,I,C,E=A[0]^t[0],w=A[e?3:1]^t[1],d=A[2]^t[2],u=A[e?1:3]^t[3],h=4;for(let A=0;g>A;A++)c=s[E>>>24]^a[w>>16&255]^n[d>>8&255]^o[255&u]^t[h],I=s[w>>>24]^a[d>>16&255]^n[u>>8&255]^o[255&E]^t[h+1],C=s[d>>>24]^a[u>>16&255]^n[E>>8&255]^o[255&w]^t[h+2],u=s[u>>>24]^a[E>>16&255]^n[w>>8&255]^o[255&d]^t[h+3],h+=4,E=c,w=I,d=C;for(let A=0;4>A;A++)i[e?3&-A:A]=B[E>>>24]<<24^B[w>>16&255]<<16^B[d>>8&255]<<8^B[255&u]^t[h++],c=E,E=w,w=d,d=u,u=c;return i}},TA=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=CA.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 CA.clamp(e,i)}},zA=dA.hmacSha1;let kA=WA&&OA&&typeof UA.importKey==eA,xA=WA&&OA&&typeof UA.deriveBits==eA;class HA extends p{constructor({password:A,rawPassword:e,encryptionStrength:g,checkPasswordOnly:i}){super({start(){t.assign(this,{ready:new u(A=>this.resolveReady=A),password:VA(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 JA(A,e,t,PA(g,0,SA[e])),r=PA(g,SA[e]);if(i[0]!=r[0]||i[1]!=r[1])throw new l(hA)})(t,r,g,PA(A,0,SA[r]+2)),A=PA(A,SA[r]+2),i?e.error(new l(DA)):s()):await a;const n=new I(A.length-bA-(A.length-bA)%QA);e.enqueue(NA(t,A,n,0,bA,!0))},async flush(A){const{ctr:e,hmac:t,pending:g,ready:i}=this;if(t&&e){await i;const r=PA(g,0,g.length-bA),s=PA(g,g.length-bA);let a=new I;if(r.length){const A=XA(KA,r);t.update(A);const g=e.update(A);a=qA(KA,g)}const n=PA(qA(KA,t.digest()),0,bA);let o=g.length<bA?1:0;for(let A=0;bA>A;A++)o|=n[A]^s[A];if(o)throw new l(FA);A.enqueue(a)}}})}}class LA extends p{constructor({password:A,rawPassword:e,encryptionStrength:g}){let i;super({start(){t.assign(this,{ready:new u(A=>this.resolveReady=A),password:VA(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=YA(new I(SA[e]));return ZA(g,await JA(A,e,t,g))})(t,i,g),r()):await s;const n=new I(a.length+A.length-A.length%QA);n.set(a,0),e.enqueue(NA(t,A,n,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(XA(KA,g));t.update(A),s=qA(KA,A)}i.signature=qA(KA,t.digest()).slice(0,bA),A.enqueue(ZA(s,i.signature))}}}),i=this}}function NA(A,e,t,g,i,r){const{ctr:s,hmac:a,pending:n}=A;n.length&&(e=ZA(n,e));const o=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+(o-o%QA)),B=0;o-QA>=B;B+=QA){const A=XA(KA,PA(e,B,B+QA));r&&a.update(A);const i=s.update(A);r||a.update(i),t.set(qA(KA,i),B+g)}return A.pending=PA(e,B),t}async function JA(A,g,i,r){A.password=null;const s=await(async(A,e,t,g,i)=>{if(!kA)return dA.importKey(e);try{return await UA.importKey("raw",e,t,!1,i)}catch{return kA=!1,dA.importKey(e)}})(0,i,mA,0,yA),a=await(async(A,e,t)=>{if(!xA)return dA.pbkdf2(e,A.salt,fA.iterations,t);try{return await UA.deriveBits(A,e,t)}catch{return xA=!1,dA.pbkdf2(e,A.salt,fA.iterations,t)}})(t.assign({salt:r},fA),s,8*(2*MA[g]+2)),n=new I(a),o=XA(KA,PA(n,0,MA[g])),B=XA(KA,PA(n,MA[g],2*MA[g])),c=PA(n,2*MA[g]);return t.assign(A,{keys:{key:o,authentication:B,passwordVerification:c},ctr:new TA(new RA(o),e.from(GA)),hmac:new zA(B)}),c}function VA(A,e){return e===_?IA(A):e}function ZA(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 PA(A,e,t){return A.subarray(e,t)}function qA(A,e){return A.fromBits(e)}function XA(A,e){return A.toBits(e)}class vA 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 l(hA);A=A.subarray(12)}i?e.error(new l(DA)):e.enqueue(_A(t,A))}})}}class jA 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=YA(new I(12));e[11]=t.passwordVerification,g=new I(A.length+e.length),g.set($A(t,e),0),i=12}else g=new I(A.length),i=0;g.set($A(t,A),i),e.enqueue(g)}})}}function _A(A,e){const t=new I(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 I(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(s.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(s.imul(e,1^e)>>>8)}function ge(A){return 255&A}function ie(A){return 4294967295&A}const re="Invalid uncompressed size",se="Invalid compressed data";class ae extends p{constructor(A,{chunkSize:e,CompressionStreamZlib:t,CompressionStream:g}){super({});const{compressed:i,encrypted:r,useCompressionStream:s,zipCrypto:a,signed:n,level:o}=A,B=this;let c,l,I=super.readable;r&&!a||!n||(c=new lA,I=ce(I,c)),i&&(I=Be(I,s,{level:o,chunkSize:e},g,t,g)),r&&(a?I=ce(I,new jA(A)):(l=new LA(A),I=ce(I,l))),oe(B,I,()=>{let A;r&&!a&&(A=l.signature),r&&!a||!n||(A=new w(c.value.buffer).getUint32(0)),B.signature=A})}}class ne extends p{constructor(A,{chunkSize:e,DecompressionStreamZlib:t,DecompressionStream:g}){super({});const{zipCrypto:i,encrypted:r,signed:s,signature:a,compressed:n,useCompressionStream:o,deflate64:B}=A;let c,I,C=super.readable;r&&(i?C=ce(C,new vA(A)):(I=new HA(A),C=ce(C,I))),n&&(C=Be(C,o,{chunkSize:e,deflate64:B},g,t,g),C=(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 l(se);throw e.cause=A,e}const{value:g,done:i}=t;i?A.close():A.enqueue(g)},cancel:A=>e.cancel(A)})})(C)),r&&!i||!s||(c=new lA,C=ce(C,c)),oe(this,C,()=>{if((!r||i)&&s){const A=new w(c.value.buffer);if(a!=A.getUint32(0,!1))throw new l(FA)}})}}function oe(A,e,g){e=ce(e,new p({flush:g})),t.defineProperty(A,"readable",{get:()=>e})}function Be(A,e,t,g,i,r){const s=e&&g?g:i||r,a=t.deflate64?"deflate64-raw":"deflate-raw";let n;try{n=new s(a,t)}catch(A){if(!e)throw A;if(i)n=new i(a,t);else{if(!r)throw A;n=new r(a,t)}}return((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})(A,n)}function ce(A,e){return A.pipeThrough(e)}const le="data",Ie="deflate",Ce="inflate";class Ee extends p{constructor(A,e){super({});const g=this,{codecType:i}=A;let r;i.startsWith(Ie)?r=ae:i.startsWith(Ce)&&(r=ne),g.outputSize=0;let s=0;const a=new r(A,e),n=super.readable,o=new p({transform(A,e){A&&A.length&&(s+=A.length,e.enqueue(A))},flush(){t.assign(g,{inputSize:s})}}),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 l(re)},flush(){const{signature:A}=a;t.assign(g,{signature:A,inputSize:s})}});t.defineProperty(g,"readable",{get:()=>n.pipeThrough(o).pipeThrough(a).pipeThrough(B)})}}class we extends p{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 de={type:"module"},ue="error";let he,Fe,De,Ye,Qe=!0;try{Qe=typeof structuredClone==eA&&structuredClone(new DOMException("","AbortError")).code!==_}catch{}class pe{constructor(A,{readable:e,writable:g},{options:i,config:r,streamOptions:s,useWebWorkers:a,transferStreams:n,workerURI:o},B){const{signal:c}=s;return t.assign(A,{busy:!0,generation:(A.generation||0)+1,readable:e.pipeThrough(new we(sA(r))).pipeThrough(new me(s),{signal:c}),writable:g,options:t.assign({},i),workerURI:o,transferStreams:n,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)}}}),he===_&&(he=typeof b!=AA),(a&&he?Se:ye)(A,r)}}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 r;try{if(!A.useCompressionStream)try{await void 0}catch{const e=A.codecType.startsWith(Ie)?i.CompressionStreamZlib:i.DecompressionStreamZlib;e&&!e.requiresModule||(A.useCompressionStream=!0)}r=new Ee(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 Se(A,e){const{baseURI:g,chunkSize:i}=e;let{wasmURI:r}=e;if(!A.interface){let s;typeof r==eA&&(r=r());try{s=be(A.workerURI,g,A)}catch{return he=!1,ye(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:n,closed:o,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=We({type:"start",options:a,config:e,readable:s,writable:n},A)}catch(e){B();try{await o}catch{}throw A.onTaskFinished(),e}c||t.assign(A,{reader:s.getReader(),writer:n.getWriter()});try{const A=await r;return await l(),await o,A}catch(A){await l(),B();try{await o}catch{}throw A}async function l(){if(!c&&!n.locked)try{await n.getWriter().close()}catch{}}})(A,{chunkSize:i,wasmURI:r,baseURI:g})}})}return A.interface}function Me(A){const{worker:e}=A;if(e)try{e.terminate()}catch{}A.interface=null}function be(A,e,g,i,r=!0){let s,a,n;if(De===_||Fe!==A){const t=typeof A==eA;a=t?A(r):A;const o=a.startsWith("data:"),B=a.startsWith("blob:");if(o||B){i===_&&(i=!1),i&&(n=de);try{s=new b(a,n)}catch(r){if(B)try{c.revokeObjectURL(a)}catch{}if(t&&B)return be(A,e,g,i,!1);if(i)throw r;return be(A,e,g,!0,!1)}}else{i===_&&(i=!0),i&&(n=de);try{a=new c(a,e)}catch{}try{s=new b(a,n)}catch(t){if(i)throw t;return be(A,e,g,!1,r)}}Fe=A,De=a,Ye=n}else s=new b(De,Ye);return s.addEventListener("message",A=>(async({data:A},e)=>{const{type:g,value:i,messageId:r,result:s,error:a}=A,{reader:n,writer:o,resolveResult:B,rejectResult:c,onTaskFinished:C,generation:E}=e,w=()=>e.generation!=E;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}),d(s)}else{if("pull"==g){const{value:A,done:t}=await n.read();w()||We({type:le,value:A,done:t,messageId:r},e)}g==le&&(await o.ready,await o.write(new I(i)),w()||We({type:"ack",messageId:r},e)),"close"==g&&d(null,s)}}catch(a){w()||(Me(e),d(a))}function d(A,e){w()||(A?c(A):B(e),o&&o.releaseLock(),C())}})(A,g)),s.addEventListener(ue,A=>Ge(A,g)),s.addEventListener("messageerror",A=>Ge(A,g)),s}function Ge(A,e){A.preventDefault&&A.preventDefault();const{rejectResult:t,writer:g,onTaskFinished:i}=e;Me(e),t&&(t(A.error||new l(A.message||ue)),g&&g.releaseLock(),i())}function We(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&&Qe?(i&&s.push(i),r&&s.push(r)):A.readable=A.writable=null,s.length)try{return e.postMessage(A,s),!0}catch{Qe=!1,A.readable=A.writable=null,e.postMessage(A)}else e.postMessage(A)}catch(A){throw t&&t.releaseLock(),A}}let Ue=[];const Oe=[];let Ke,Re,Te=0;async function ze(A,e){const{options:t,config:g}=e,{transferStreams:r,useWebWorkers:s,useCompressionStream:a,compressed:n,signed:o,encrypted:B}=t,{workerURI:c,maxWorkers:l}=g;e.transferStreams=r||r===_;const I=!(n||o||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=Ue.find(A=>!A.busy);if(t)return Ne(t),new pe(t,A,e,C);if(Ue.length<l){const t={indexWorker:Te};return Te++,Ue.push(t),new pe(t,A,e,C)}return new u(t=>{Oe.push({resolve:t,stream:A,workerOptions:e}),Re=g.workerStarvationTimeout,ke()})})()).run();function C(A){if(xe(),Oe.length){const[{resolve:e,stream:t,workerOptions:g}]=Oe.splice(0,1);e(new pe(A,t,g,C)),ke()}else A.worker?(Ne(A),((A,e)=>{const{config:t}=e,{terminateWorkerTimeout:g}=t;i.isFinite(g)&&g>=0&&(A.terminated?A.terminated=!1:A.terminateTimeout=setTimeout(async()=>{Ue=Ue.filter(e=>e!=A);try{await A.terminate()}catch{}},g))})(A,e)):Ue=Ue.filter(e=>e!=A)}}function ke(){!Ke&&Oe.length&&i.isFinite(Re)&&Re>=0&&(Ke=setTimeout(He,Re))}function xe(){Ke&&(clearTimeout(Ke),Ke=null)}function He(){if(Ke=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)),ke()}}function Le(){xe(),ke()}function Ne(A){const{terminateTimeout:e}=A;e&&(clearTimeout(e),A.terminateTimeout=null)}const Je="HTTP error ",Ve="HTTP Range not supported",Ze="Content-Range",Pe="Range",qe="GET",Xe="bytes",ve=65536,je="writable";class _e{constructor(){this.size=0}init(){this.initialized=!0}}class $e extends _e{get readable(){const A=this,{chunkSize:e=ve}=A,t=new m({start(){this.chunkOffset=0},async pull(g){const{offset:i=0,size:r,diskNumberStart:a}=t,{chunkOffset:n}=this,o=r===_?e:s.min(e,r-n),B=await Yt(A,i+n,o,a);g.enqueue(B),n+e>r||r===_&&!B.length&&o?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 l("Writer not initialized");return A.writeUint8Array(e)}});t.defineProperty(A,je,{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 r=await i.arrayBuffer();return r.byteLength>e&&(r=r.slice(A,g)),new I(r)}}class tt extends _e{constructor(A){super();const e=this,g=new p,i=[];A&&i.push(["Content-Type",A]),t.defineProperty(e,je,{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(),rt(this,A,e)}async init(){await st(this,Ct,Bt),super.init()}readUint8Array(A,e){return at(this,A,e,Ct,Bt)}}class it extends $e{constructor(A,e){super(),rt(this,A,e)}async init(){await st(this,Et,ct),super.init()}readUint8Array(A,e){return at(this,A,e,Et,ct)}}function rt(A,e,g){const{preventHeadRequest:i,useRangeHeader:r,forceRangeRequests:s,combineSizeEocd:a,fetch:n}=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:n})}async function st(A,e,t){const{url:g,preventHeadRequest:r,useRangeHeader:s,forceRangeRequests:a,combineSizeEocd:n}=A;if((A=>{const{baseURI:e}=rA(),{protocol:t}=new c(A,e);return"http:"==t||"https:"==t})(g)&&(s||a)&&(void 0===r||r)){const g=await e(qe,A,nt(A,n?-22:void 0)),r=g.headers.get("Accept-Ranges");if(!(a||r&&r.toLowerCase()==Xe))throw new l(Ve);{if(n){const e=new I(await g.arrayBuffer());206==g.status&&e.length==L&&(A.eocdCache=e)}let r;const s=g.headers.get(Ze);if(s){const A=s.trim().split(/\s*\/\s*/);if(A.length){const e=A[1];e&&"*"!=e&&(r=i(e))}}r===_?await It(A,e,t):A.size=r}}else await It(A,e,t)}async function at(A,e,t,g,r){const{useRangeHeader:s,forceRangeRequests:a,eocdCache:n,size:o,options:B}=A;if(s||a){if(n&&e==o-L&&t==L)return n;if(o>e&&0!==t){e+t>o&&(t=o-e);const r=await g(qe,A,nt(A,e,t));if(206!=r.status)throw new l(Ve);const s=r.headers.get(Ze);if(s){const A=i(s.trim().split(/[\s-]+/)[1]);if(!i.isNaN(A)&&A!=e)throw new l(Ve)}const a=new I(await r.arrayBuffer());if(a.length!=t)throw new l(Ve);return a}return new I}{const{data:g}=A;return g||await r(A,B),new I(A.data.subarray(e,e+t))}}function nt(A,e=0,g=1){return t.assign({},ot(A),{[Pe]:Xe+"="+(0>e?e:e+"-"+(e+g-1))})}function ot({options:A}){const{headers:e}=A;if(e)return Symbol.iterator in e?t.fromEntries(e):e}async function Bt(A){await lt(A,Ct)}async function ct(A){await lt(A,Et)}async function lt(A,e){const t=await e(qe,A,ot(A));A.data=new I(await t.arrayBuffer()),A.size=A.data.length}async function It(A,e,t){if(A.preventHeadRequest)await t(A,A.options);else{const g=await e("HEAD",A,ot(A)),r=g.headers.get("Content-Length");r&&!g.headers.get("Content-Encoding")?A.size=i(r):await t(A,A.options)}}async function Ct(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(Ve):new l(Je+(s.statusText||s.status))}function Et(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 n(A)})}else r(416==s.status?new l(Ve):new l(Je+(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 wt 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 u.all(e.map(async(t,g)=>{await Dt(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 n=A;for(;i[a]&&n>=i[a].size;)n-=i[a].size,a++;const o=i[a];if(o){const i=o.size;if(n+e>i){const s=i-n;r=new I(e);const a=await Yt(o,n,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 Yt(o,n,e)}else r=new I;return g.lastDiskNumber=s.max(a,g.lastDiskNumber),r}}class ut extends _e{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 f({async write(e){const{availableSize:t}=g;if(s)e.length<t?await n(e):(await n(e.subarray(0,t)),await o(),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 Dt(i),r=t.writable,s=r.getWriter(),await this.write(e)}},async close(){s&&(await s.ready,await o())},async abort(A){s&&await s.abort(A)}});async function n(A){const e=A.length;e&&(await s.ready,await s.write(A),i.size+=e,g.availableSize-=e)}async function o(){await s.close()}t.defineProperty(g,je,{get:()=>a})}}class ht{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 ut(A)),A instanceof f&&(A={writable:A}),A.size===_&&(A.size=0),A instanceof ut||t.assign(A,{diskNumber:0,diskOffset:0,availableSize:$,maxSize:$}),A}}async function Dt(A,e){if(!A.init||A.initialized)return u.resolve();await A.init(e)}function Yt(A,e,t,g){return A.readUint8Array(e,t,g)}const Qt="\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+=Qt[A[t]];return e}})(A):new F(e,{ignoreBOM:!0}).decode(A)}const mt="filename",ft="rawFilename",yt="comment",St="rawComment",Mt="uncompressedSize",bt="compressedSize",Gt="offset",Wt="diskNumberStart",Ut="lastModDate",Ot="rawLastModDate",Kt="lastAccessDate",Rt="creationDate",Tt="rawCreationDate",zt="internalFileAttributes",kt="externalFileAttributes",xt="msdosAttributesRaw",Ht="msdosAttributes",Lt="msDosCompatible",Nt="zip64",Jt="encrypted",Vt="version",Zt="versionMadeBy",Pt="zipCrypto",qt="directory",Xt="executable",vt="compressionMethod",jt="signature",_t="extraField",$t="unixMode",Ag="setuid",eg="setgid",tg="sticky",gg=[mt,ft,Mt,bt,Ut,Ot,yt,St,Kt,Rt,Tt,Gt,Wt,zt,kt,xt,Ht,Lt,Nt,Jt,Vt,Zt,Pt,qt,Xt,vt,jt,_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 rg="password",sg="rawPassword",ag="passThrough",ng="signal",og="checkAmbiguity",Bg="useWebWorkers",cg="useCompressionStream",lg="transferStreams",Ig="preventClose",Cg="offset",Eg="File format is not recognized",wg="End of central directory not found",dg="End of Zip64 central directory locator not found",ug="Central directory header not found",hg="Local file header not found",Fg="Zip64 extra field not found",Dg="File contains encrypted entry",Yg="Encryption method not supported",Qg="Compression method not supported",pg="Split zip file",mg="Overlapping entry found",fg="Ambiguous archive",yg="utf-8",Sg="cp437",Mg=[[Mt,W],[bt,W],[Gt,W],[Wt,U]],bg={[U]:{getValue:Jg,bytes:4},[W]:{getValue:Vg,bytes:8}};class Gg{constructor(A,e={}){t.assign(this,{reader:new ht(A),options:e,config:rA(),readRanges:new n})}async*getEntriesGenerator(A={}){const e=this;let{reader:g}=e;const{config:i}=e;if(await Dt(g),g.size!==_&&g.readUint8Array||(g=new et(await new B(g.readable).blob()),await Dt(g)),g.size<L)throw new l(Eg);g.chunkSize=sA(i);const r=await(async(A,e,t)=>{const g=new I(4);var i;return i=e,Zg(g).setUint32(0,i,!0),await r(22)||await r(s.min(1048582,t));async function r(e){const i=t-e,r=await Yt(A,i,e);for(let A=r.length-22;A>=0;A--)if(r[A]==g[0]&&r[A+1]==g[1]&&r[A+2]==g[2]&&r[A+3]==g[3])return{offset:i+A,buffer:r.slice(A,A+22).buffer}}})(g,k,g.size);if(!r)throw Jg(Zg(await Yt(g,0,4)))==R?new l(pg):new l(wg);const a=Zg(r);let n=Jg(a,12),c=Jg(a,16);const C=r.offset,E=Ng(a,20),w=C+L+E,d=kg(e,A,og);d&&w!=g.size&&zg("appended data");let h=Ng(a,4);const F=g.lastDiskNumber||0;let D,Y,Q=Ng(a,6),m=Ng(a,10),f=0;if(c==W||n==W||m==U||Q==U){const A=20>r.offset?new I:await Yt(g,r.offset-20,20),e=Zg(A);if(20==A.length&&Jg(e,0)==H){c=Vg(e,8);let A=await Yt(g,c,56,-1),t=Zg(A);const i=r.offset-20-56-(g.lastDiskOffset||0);if((56>A.length||Jg(t,0)!=x)&&c!=i&&i>=0){const e=c;c=i,c>e&&(f=c-e),A=await Yt(g,c,56,-1),t=Zg(A)}if(56>A.length||Jg(t,0)!=x)throw new l(dg);Y=!0,h==U?h=Jg(t,16):d&&h!=Jg(t,16)&&zg("mismatched zip64 end of central directory record"),Q==U?Q=Jg(t,20):d&&Q!=Jg(t,20)&&zg("mismatched zip64 end of central directory record"),m==U?m=Vg(t,32):d&&m!=Vg(t,32)&&zg("mismatched zip64 end of central directory record"),n==W?n=Vg(t,40):d&&n!=Vg(t,40)&&zg("mismatched zip64 end of central directory record"),c=Vg(t,48)+f}}const y=n,S=r.offset-(Y?76:0);if(c<g.size||(f=g.size-c-n-L,c=g.size-n-L),F!=h)throw new l(pg);if(0>c)throw new l(Eg);let M=0,b=await Yt(g,c,n,Q),G=Zg(b);if(n){if(4>b.length)throw new l(Eg);const A=S-n-(g.lastDiskOffset||0);if(Jg(G,M)!=z&&c!=A&&Q==h){const e=c;c=A,c>e&&(f+=c-e),b=await Yt(g,c,n,Q),G=Zg(b)}}const K=S-c-(g.lastDiskOffset||0);if(n==K||0>K||Q!=h||(n=K,b=await Yt(g,c,n,Q),G=Zg(b)),0>c||c>=g.size)throw new l(Eg);D=c;const T=kg(e,A,"filenameEncoding"),N=kg(e,A,"commentEncoding"),J=d?new o:_;let X;for(let r=0;m>r;r++){const a=new Wg(g,i,e.options);if(M+46>b.length||Jg(G,M)!=z)throw new l(ug);Ug(a,G,M+6);const n=!!a.bitFlag.languageEncodingFlag,o=M+46,c=o+a.filenameLength,I=c+a.extraFieldLength,C=Ng(G,M+4),E=!(C>>8),w=C>>8==3,h=b.subarray(o,c),F=Ng(G,M+32),Y=I+F,Q=b.subarray(I,Y),y=n,S=n,W=Jg(G,M+38),K=W&O,R={readOnly:!!(1&K),hidden:!!(2&K),system:!!(4&K),directory:!!(16&K),archive:!!(32&K)},k=Jg(G,M+42),x=kg(e,A,"decodeText")||pt,H=y?yg:T||Sg,L=S?yg:N||Sg;let v=x(h,H);v===_&&(v=pt(h,H));let j=x(Q,L);j===_&&(j=pt(Q,L)),t.assign(a,{index:r,versionMadeBy:C,msDosCompatible:E,compressedSize:0,uncompressedSize:0,commentLength:F,offset:k,diskNumberStart:Ng(G,M+34),internalFileAttributes:Ng(G,M+36),externalFileAttributes:W,msdosAttributesRaw:K,msdosAttributes:R,rawFilename:h,filenameUTF8:y,commentUTF8:S,rawExtraField:b.subarray(c,I),rawComment:Q,filename:v,comment:j}),Og(a,a,G,M+6),a.offset+=f,D=s.min(a.offset,D),d&&(J.has(a.filename)&&(X=!0),J.add(a.filename));const $=a.externalFileAttributes>>16&U;a.unixMode===_&&16877&$&&(a.unixMode=$);const AA=!!(a.unixMode&Z),eA=!!(a.unixMode&P),tA=!!(512&a.unixMode),gA=a.unixMode!==_?!!(73&a.unixMode):w&&!!(73&$),iA=a.unixMode!==_&&(61440&a.unixMode)==V,rA=(61440&$)==V;t.assign(a,{setuid:AA,setgid:eA,sticky:tA,unixExternalUpper:$,internalFileAttribute:a.internalFileAttributes,externalFileAttribute:a.externalFileAttributes,executable:gA,directory:iA||rA||E&&R.directory||a.filename.endsWith(q)&&!a.uncompressedSize,zipCrypto:a.encrypted&&!a.extraFieldAES});const sA=new ig(a);sA.getData=(A,t)=>a.getData(A,sA,e.readRanges,t),sA.arrayBuffer=async A=>{const t=new p,[g]=await u.all([new B(t.readable).arrayBuffer(),a.getData(t,sA,e.readRanges,A)]);return g},M=Y;const{onprogress:aA}=A;if(aA)try{await aA(r+1,m,new ig(a))}catch{}yield sA}d&&M!=y&&zg("trailing central directory data"),X&&zg("duplicate filename"),d&&(f||m&&D>0)&&zg("prepended data");const v=kg(e,A,"extractPrependedData"),j=kg(e,A,"extractAppendedData");return v&&(e.prependedData=D>0?await Yt(g,0,D):new I),e.comment=E?await Yt(g,C+L,E):new I,j&&(e.appendedData=w<g.size?await Yt(g,w,g.size-w):new I),!0}async getEntries(A={}){const e=[];for await(const t of this.getEntriesGenerator(A))e.push(t);return e}async close(){}}class Wg{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:n,offset:o,diskNumberStart:B,extraFieldAES:c,extraFieldZip64:C,compressionMethod:E,config:w,bitFlag:d,signature:u,rawLastModDate:h,uncompressedSize:F,compressedSize:D}=r,{dataDescriptor:Y}=d,Q=e.localDirectory={},p=await Yt(a,o,X,B),m=Zg(p);let y=kg(r,i,rg),S=kg(r,i,sg);const M=kg(r,i,ag);if(y=y&&y.length&&y,S=S&&S.length&&S,c&&99!=c.originalCompressionMethod)throw new l(Qg);if(0!=E&&8!=E&&9!=E&&!M)throw new l(Qg);if(p.length<X||Jg(m,0)!=K)throw new l(hg);Ug(Q,m,4);const{extraFieldLength:b,filenameLength:G}=Q,W=kg(r,i,og);let U=new I;if(W&&(G||b)){const A=await Yt(a,o+X,G+b,B);U=A.subarray(0,G),Q.rawExtraField=A.subarray(G)}else Q.rawExtraField=b?await Yt(a,o+X+G,b,B):new I;Og(r,Q,m,4,!0),W&&((A,e,t)=>{const{rawFilename:g}=A;(t.length!=g.length||t.some((A,e)=>A!=g[e]))&&zg("mismatched local file header (filename)"),(2057&e.rawBitFlag)!=(2057&A.rawBitFlag)&&zg("mismatched local file header (general purpose bit flag)"),e.compressionMethod!=A.compressionMethod&&zg("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||zg("mismatched local file header (signature or sizes)")})(r,Q,U);const{lastAccessDate:R,creationDate:z}=Q;R&&(e.lastAccessDate=R),z&&(e.creationDate=z);const k=r.encrypted&&Q.encrypted&&!M,x=k&&!c;if(M||(e.zipCrypto=x),k){if(!x&&c.strength===_)throw new l(Yg);if(!y&&!S)throw new l(Dg)}const H=o+X+G+b,L=D,N=a.readable;t.assign(N,{diskNumberStart:B,offset:H,size:L});const J=kg(r,i,ng),V=kg(r,i,"checkPasswordOnly");let Z=kg(r,i,"checkOverlappingEntry");const P=kg(r,i,"checkOverlappingEntryOnly");P&&(Z=!0);const{onstart:q,onprogress:v,onend:j}=i,$=9==E;let AA=kg(r,i,cg);$&&(AA=!1);const eA={options:{codecType:Ce,password:y,rawPassword:S,zipCrypto:x,encryptionStrength:c&&c.strength,signed:kg(r,i,"checkSignature")&&!M,passwordVerification:x&&(Y?h>>>8&O:u>>>24&O),outputSize:M?D:F,signature:u,compressed:0!=E&&!M,encrypted:k,useWebWorkers:kg(r,i,Bg),useCompressionStream:AA,transferStreams:kg(r,i,lg),deflate64:$,checkPasswordOnly:V},config:w,streamOptions:{signal:J,size:L,onstart:q,onprogress:v,onend:j}};let tA;Z&&await(async({reader:A,fileEntry:e,index:t,offset:g,diskNumberStart:i,signature:r,compressedSize:a,uncompressedSize:n,dataOffset:o,dataDescriptor:B,extraFieldZip64:c,readRanges:I})=>{let C=0;if(i&&A.readers)for(let e=0;e<s.min(i,A.readers.length);e++)C+=A.readers[e].size;let E=0;if(B&&(E=c?20:12),E){const t=await Yt(A,o+a,E+4,i);if(t.length==E+4&&Jg(Zg(t),0)==T){const A=Jg(Zg(t),4);let g,i;c?(g=Vg(Zg(t),8),i=Vg(Zg(t),16)):(g=Jg(Zg(t),8),i=Jg(Zg(t),12)),(e.encrypted&&!e.zipCrypto||A==r)&&g==a&&i==n&&(E+=4)}}const w={start:C+g,end:C+o+a+E,fileEntry:e};for(const[A,e]of I)if(A!=t&&w.start<e.end&&e.start<w.end){const A=new l(mg);throw A.overlappingEntry=e.fileEntry,A}I.set(t,w)})({reader:a,fileEntry:e,index:n,offset:o,diskNumberStart:B,signature:u,compressedSize:D,uncompressedSize:F,dataOffset:H,dataDescriptor:Y||Q.bitFlag.dataDescriptor,extraFieldZip64:C||Q.extraFieldZip64,readRanges:g});try{if(!P){V&&(A=new f),A=new Ft(A),await Dt(A,M?D:F),({writable:tA}=A);const{outputSize:e}=await ze({readable:N,writable:tA},eA);if(A.size+=e,e!=(M?D:F))throw new l(re)}}catch(e){if(e.outputSize!==_&&(A.size+=e.outputSize),!V||e.message!=DA)throw e}finally{kg(r,i,Ig)||!tA||tA.locked||await tA.getWriter().close()}return V||P?_:A.getData?A.getData():tA}}function Ug(A,e,g){const i=A.rawBitFlag=Ng(e,g+2),r=!(1&~i),s=Jg(e,g+6);t.assign(A,{encrypted:r,version:Ng(e,g),bitFlag:{level:(6&i)>>1,dataDescriptor:!(8&~i),languageEncodingFlag:(i&J)==J},rawLastModDate:s,lastModDate:xg(s),filenameLength:Ng(e,g+22),extraFieldLength:Ng(e,g+24)})}function Og(A,e,g,i,r){const{rawExtraField:s}=e,o=e.extraField=new n,B=Zg(new I(s));let c=0;try{for(;c<s.length;){const A=Ng(B,c),e=Ng(B,c+2);o.set(A,{type:A,data:s.slice(c+4,c+4+e)}),c+=4+e}}catch{}const C=Ng(g,i+4);t.assign(e,{signature:Jg(g,i+10),compressedSize:Jg(g,i+14),uncompressedSize:Jg(g,i+18)});const E=o.get(1);E&&(((A,e)=>{e.zip64=!0;const t=Zg(A.data),g=Mg.filter(([A,t])=>e[A]==t),i=g.reduce((A,[,e])=>A+bg[e].bytes,0);if(A.data.length<i)throw new l(Fg);for(let i=0,r=0;i<g.length;i++){const[s,a]=g[i],n=bg[a];e[s]=A[s]=n.getValue(t,r),r+=n.bytes}})(E,e),e.extraFieldZip64=E);const w=o.get(28789);w&&(Kg(w,mt,ft,e,A),e.extraFieldUnicodePath=w);const d=o.get(25461);d&&(Kg(d,yt,St,e,A),e.extraFieldUnicodeComment=d);const u=o.get(39169);u&&u.data.length>=7?(((A,e,g)=>{const i=Zg(A.data),r=Lg(i,4);t.assign(A,{vendorVersion:Lg(i,0),vendorId:Lg(i,2),strength:r,originalCompressionMethod:g,compressionMethod:Ng(i,5)}),e.compressionMethod=A.compressionMethod})(u,e,C),e.extraFieldAES=u):e.compressionMethod=C;const h=o.get(10);h&&(((A,e)=>{const g=Zg(A.data);let i,r=4;try{for(;r<A.data.length&&!i;){const e=Ng(g,r),t=Ng(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=Zg(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 n={lastModDate:Hg(r),lastAccessDate:Hg(s),creationDate:Hg(a)};t.assign(A,n),t.assign(e,n)}}catch{}})(h,e),e.extraFieldNTFS=h);const F=o.get(30805);if(F)Rg(F,e,!1),e.extraFieldUnix=F;else{const A=o.get(30837);A&&(Rg(A,e,!0),e.extraFieldInfoZip=A)}const D=o.get(N);D&&(((A,e,t)=>{if(!A.data.length)return;const g=Zg(A.data),i=Lg(g,0),r=[],s=[];t?(1&~i||(r.push(Ut),s.push(Ot)),2&~i||(r.push(Kt),s.push("rawLastAccessDate")),4&~i||(r.push(Rt),s.push(Tt))):5>A.data.length||(r.push(Ut),s.push(Ot));let n=1;r.forEach((t,i)=>{if(A.data.length>=n+4){const r=Jg(g,n);e[t]=A[t]=new a(1e3*(0|r));const o=s[i];A[o]=r}n+=4})})(D,e,r),e.extraFieldExtendedTimestamp=D);const Y=o.get(6534);Y&&(e.extraFieldUSDZ=Y)}function Kg(A,e,g,i,r){if(5>A.data.length)return void(A.valid=!1);const s=Zg(A.data),a=new cA;a.append(r[g]);const n=Zg(new I(4));n.setUint32(0,a.get(),!0);const o=Jg(s,1);t.assign(A,{version:Lg(s,0),[e]:pt(A.data.subarray(5)),valid:!r.bitFlag.languageEncodingFlag&&o==Jg(n,0)}),A.valid&&(i[e]=A[e],i[e+"UTF8"]=!0)}function Rg(A,e,g){try{const i=Zg(new I(A.data));let r,s;if(g){let e=0;const g=Lg(i,e++),a=Lg(i,e++);r=Tg(A.data.subarray(e,e+a)),e+=a;const n=Lg(i,e++);s=Tg(A.data.subarray(e,e+n)),t.assign(A,{version:g,uid:r,gid:s})}else 4>A.data.length||(r=Ng(i,0),s=Ng(i,2),t.assign(A,{uid:r,gid:s}));r!==_&&(e.uid=r),s!==_&&(e.gid=s)}catch{}}function Tg(A){const e=new I(4);return e.set(A,0),new w(e.buffer,e.byteOffset,4).getUint32(0,!0)}function zg(A){const e=new l(fg);throw e.reason=A,e}function kg(A,e,t){return e[t]===_?A.options[t]:e[t]}function xg(A){const e=(4294901760&A)>>16,t=A&U;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/r(1e4)-r(116444736e5)))}function Lg(A,e){return A.getUint8(e)}function Ng(A,e){return A.getUint16(e,!0)}function Jg(A,e){return A.getUint32(e,!0)}function Vg(A,e){return i(A.getBigUint64(e,!0))}function Zg(A){return new w(A.buffer,A.byteOffset,A.byteLength)}const Pg="File already exists",qg="Zip file comment exceeds 64KB",Xg="File entry comment exceeds 64KB",vg="File entry name exceeds 64KB",jg="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",ri="Undefined reader",si="Zip file not empty",ai=new I([7,0,2,0,65,69,3,0,0]),ni="infozip",oi="unix";let Bi=0;const ci=[];class li{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:rA(),files:new n,filenames:new o,offset:e[Cg]===_?A.size||A.writable.size||0:e[Cg],initialOffset:e[Cg]===_?0:e[Cg]-(A.size||A.writable.size||0),pendingAddFileCalls:new o,bufferedWrites:0,lastFileEntry:_})}async prependZip(A){if(this.filenames.size)throw new l(si);A=new ht(A),await Dt(A);const e=new Gg(A.readable),g=await e.getEntries();await e.close(),await Dt(this.writer),await A.readable.pipeTo(this.writer.writable,{preventClose:!0,preventAbort:!0}),this.writer.size=this.offset=A.size,this.filenames=new o(g.map(A=>A.filename)),this.files=new n(g.map(A=>{const{version:e,rawLastModDate:g,lastAccessDate:i,creationDate:r,rawFilename:s,bitFlag:a,encrypted:n,uncompressedSize:o,compressedSize:B,diskOffset:c,diskNumber:l,zip64:C}=A;let{compressionMethod:E,rawExtraFieldZip64:w,rawExtraFieldAES:d,rawExtraFieldExtendedTimestamp:u,rawExtraFieldNTFS:h,rawExtraFieldUnix:F,rawExtraField:D}=A;const{level:Y,languageEncodingFlag:Q,dataDescriptor:p}=a;w=w||new I,d=d||new I,u=u||new I,h=h||new I,F=F||new I,D=D||new I,A.extraFieldAES&&(E=99);const m=bi(w,d,u,h,F,D),f=C&&o>=W,y=C&&B>=W,S=-7&Wi(Y,Q,p,n,E)|Y<<1,{headerArray:M,headerView:b}=Gi({version:e,bitFlag:S,compressionMethod:E,uncompressedSize:o,compressedSize:B,rawLastModDate:g,rawFilename:s,zip64CompressedSize:y,zip64UncompressedSize:f,extraFieldLength:m}),{signature:G}=A;return G!==_&&fi(b,10,G),t.assign(A,{zip64UncompressedSize:f,zip64CompressedSize:y,zip64Offset:C&&this.offset-c>=W,zip64DiskNumberStart:C&&l>=U,rawExtraFieldZip64:w,rawExtraFieldAES:d,rawExtraFieldExtendedTimestamp:u,rawExtraFieldNTFS:h,rawExtraFieldUnix:F,rawExtraField:D,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:n}=i;let o,B;Bi<n.maxWorkers?Bi++:await new u(A=>ci.push(A));try{if(A=A.trim(),Qi(i,g,qt)&&!A.endsWith(q)&&(A+=q),i.filenames.has(A))throw new l(Pg);return i.filenames.add(A),B=!0,o=(async(A,e,g,i)=>{const s=((A,e,t)=>{e=e.trim();let g=Qi(A,t,Lt),i=Qi(A,t,Zt,g?20:768);const r=Qi(A,t,Xt),s=Qi(A,t,"uid"),a=Qi(A,t,"gid");let n=Qi(A,t,$t),o=Qi(A,t,"unixExtraFieldType"),B=Qi(A,t,Ag),c=Qi(A,t,eg),I=Qi(A,t,tg);if(s!==_&&(0>s||s>W))throw new l("Invalid uid (must be integer 0..2^32-1)");if(a!==_&&(0>a||a>W))throw new l("Invalid gid (must be integer 0..2^32-1)");if(n!==_&&(0>n||n>U))throw new l("Invalid UNIX mode (must be integer 0..65535)");if(o!==_&&o!==ni&&o!==oi)throw new l("Invalid unixExtraFieldType (must be 'infozip' or 'unix')");if(o===oi&&(s!==_&&s>U||a!==_&&a>U))throw new l("uid/gid must be 0..65535 for unixExtraFieldType 'unix' (use 'infozip' for larger ids)");o!==_||s===_&&a===_||(o=ni);let C=Qi(A,t,xt),E=Qi(A,t,Ht);const w=C!==_||E!==_;if(s!==_||a!==_||n!==_||o?(g=!1,i=i&U|768):w&&(g=!0,i&=O),C!==_&&(0>C||C>O))throw new l("Invalid msdosAttributesRaw (must be integer 0..255)");if(E&&"object"!=typeof E)throw new l("Invalid msdosAttributes (must be an object with boolean flags)");if(i>U)throw new l(jg);let d=Qi(A,t,kt,0);!t[qt]&&e.endsWith(q)&&(t[qt]=!0);const u=Qi(A,t,qt);let h;return u?(e.endsWith(q)||(e+=q),0===d&&(d=16,g||(d|=16877<<16))):g||0!==d||(d=r?493<<16:27525120),g||(h=d>>16&U,n=n===_?h:n&U,B?n|=Z:B=!!(n&Z),c?n|=P:c=!!(n&P),I?n|=512:I=!!(512&n),u&&(n|=V),d=(n&U)<<16|d&O),({msdosAttributesRaw:C,msdosAttributes:E}=((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}})(C,E)),w&&(d=d&W|C&O),{name:e,resolvedOptions:{versionMadeBy:i,msDosCompatible:g,externalFileAttributes:d,unixExternalUpper:h,uid:s,gid:a,unixMode:n,unixExtraFieldType:o,setuid:B,setgid:c,sticky:I,msdosAttributesRaw:C,msdosAttributes:E}}})(A,e,i);({name:e}=s);const n=((A,e,t)=>{const g=Qi(A,t,"encodeText",IA);let i=g(e);if(i===_&&(i=IA(e)),bi(i)>U)throw new l(vg);const r=t[yt]||"";let s=g(r);if(s===_&&(s=IA(r)),bi(s)>U)throw new l(Xg);const n=Qi(A,t,Vt,20);if(n>U)throw new l(jg);const o=Qi(A,t,Ut,new a),B=Qi(A,t,Kt),c=Qi(A,t,Rt),C=Qi(A,t,zt,0),E=Qi(A,t,ag);let w,d;E||(w=Qi(A,t,rg),d=Qi(A,t,sg));const u=Qi(A,t,"encryptionStrength",3),h=Qi(A,t,Pt),F=Qi(A,t,"extendedTimestamp",!0),D=Qi(A,t,"keepOrder",!0),Y=Qi(A,t,Bg),Q=Qi(A,t,lg,!0),p=Qi(A,t,"bufferedWrite"),m=Qi(A,t,"createTempStream"),f=Qi(A,t,"dataDescriptorSignature",!0),y=Qi(A,t,ng),S=Qi(A,t,"useUnicodeFileNames",!0),M=Qi(A,t,vt);if(!E&&M!==_&&0!==M&&8!==M)throw new l("Compression method not supported");let b=Qi(A,t,"level"),G=Qi(A,t,cg),W=Qi(A,t,"dataDescriptor");p&&W===_&&(W=!1),(W===_||h)&&(W=!0),b!==_&&6!=b&&(G=!1),G||A.config.CompressionStream!==_||A.config.CompressionStreamZlib!==_||(b=0);const O=Qi(A,t,Nt);if(!h&&(w!==_||d!==_)&&(1>u||u>3))throw new l(_g);let K=new I;const R=t[_t];if(R){let A=0,e=0;R.forEach(e=>A+=4+bi(e)),K=new I(A);const t=Mi(K);R.forEach((A,g)=>{if(g>U)throw new l($g);if(bi(A)>U)throw new l(Ai);mi(t,e,g),mi(t,e+2,bi(A)),Si(K,A,e+4),e+=4+bi(A)})}return{comment:r,resolvedOptions:{rawFilename:i,rawComment:s,version:n,lastModDate:o,lastAccessDate:B,creationDate:c,internalFileAttributes:C,passThrough:E,password:w,rawPassword:d,encryptionStrength:u,zipCrypto:h,extendedTimestamp:F,keepOrder:D,useWebWorkers:Y,transferStreams:Q,bufferedWrite:p,createTempStream:m,dataDescriptorSignature:f,signal:y,useUnicodeFileNames:S,compressionMethod:M,level:b,useCompressionStream:G,dataDescriptor:W,zip64:O,rawExtraField:K}}})(A,e,i),{comment:o}=n,B=i[_t];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:n}=t;let{dataDescriptor:o,zip64:B,level:c,compressionMethod:I}=t,C=0,E=0;if(i){if(!e)throw new l(ri);if(E=g[Mt],E===_)throw new l(ii)}const w=!0===B,d=Qi(A,g,Jt),u=!!e&&(!!(s&&bi(s)||a&&bi(a))||i&&d);e||(c=0,I=0);const h=u?r?12:16+4*n:0;e&&(e=new ht(e),await Dt(e),i?(g.uncompressedSize=E,C=pi(E)+h):e.size===_?(o=!0,(B||B===_)&&(B=!0,E=C=4294967296)):(g.uncompressedSize=E=e.size,C=pi(E)+h));const F=w||E>=W,D=w||C>=W;if(F||D){if(!1===B)throw new l(gi);B=!0}return B=B||!1,{reader:e,resolvedOptions:{dataDescriptor:o,zip64:B,zip64UncompressedSize:F,zip64CompressedSize:D,uncompressedSize:E,level:c,compressionMethod:I,encrypted:u}}})(A,g,n,i);({reader:g}=a);const{diskOffset:o,diskNumber:B}=A.writer,C=(A=>{const{rawFilename:e,lastModDate:t,lastAccessDate:g,creationDate:i,level:r,zip64:s,zipCrypto:a,useUnicodeFileNames:n,dataDescriptor:o,directory:B,rawExtraField:c,encryptionStrength:C,extendedTimestamp:E,passThrough:w,encrypted:d,zip64UncompressedSize:u,zip64CompressedSize:h,uncompressedSize:F}=A;let{version:D,compressionMethod:Y}=A;const Q=!B&&(Y===_?r===_||r>0:0!==Y);let p;const m=w||!Q,f=s&&(A.bufferedWrite||!o||!u&&!h||m),y=f||s&&o&&(u||h);if(s&&(u||h)){const A=20,e=wi(A);if(e.uint16(1),e.uint16(A-4),p=e.array,f&&(e.uint64(F),m)){const A=d?a?12:16+4*C:0;e.uint64(w?0:F+A)}}else p=new I;let S,M,b,G,W;if(d&&!a){const A=wi(bi(ai)+2);A.uint16(39169),A.bytes(ai),S=A.array,S[8]=C}else S=new I;if(E){const A=Fi(t);if(Di(A)){const e=9+(g?4:0)+(i?4:0),t=wi(e);G=1+(g?2:0)+(i?4:0),t.uint16(N),t.uint16(e-4),t.uint8(G),t.uint32(A),g&&t.uint32(Yi(Fi(g))),i&&t.uint32(Yi(Fi(i))),b=t.array}else b=new I;try{const A=hi(t),e=wi(36);e.uint16(10),e.uint16(32),e.skip(4),e.uint16(1),e.uint16(24),e.uint64(A),e.uint64(hi(g)||A),e.uint64(hi(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!=ni||e===_&&t===_)if(g!=oi||e===_&&t===_)W=new I;else{const A=wi(8);A.uint16(30805),A.uint16(4),A.uint16((e===_?0:e)&U),A.uint16((t===_?0:t)&U),W=A.array}else{const A=Ei(e),g=Ei(t),i=3+A.length+g.length,r=wi(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),W=r.array}}catch{W=new I}Y===_&&(Y=Q?8:0),s&&(D=D>45?D:45),d&&!a&&(D=D>51?D:51,S[9]=Y,Y=99);const O=y?bi(p):0,R=O+bi(S,b,M,W,c);if(R>U)throw new l(Ai);const{headerArray:T,headerView:z,rawLastModDate:k}=Gi({version:D,bitFlag:Wi(r,n,o,d,Y),compressionMethod:Y,uncompressedSize:F,lastModDate:j>t?j:t>v?v:t,rawFilename:e,zip64CompressedSize:h,zip64UncompressedSize:u,extraFieldLength:R}),x=wi(X+bi(e)+R),H=x.array,L=Mi(H);return x.uint32(K),x.bytes(T),x.bytes(e),y&&x.bytes(p),x.bytes(S),x.bytes(b),x.bytes(M),x.bytes(W),x.bytes(c),o&&(h||fi(L,18,0),u||fi(L,22,0)),{localHeaderArray:H,localHeaderView:L,headerArray:T,headerView:z,lastModDate:t,rawLastModDate:k,encrypted:d,compressed:Q,version:D,compressionMethod:Y,extraFieldExtendedTimestampFlag:G,rawExtraFieldZip64:new I,localExtraFieldZip64Length:O,rawExtraFieldExtendedTimestamp:b,rawExtraFieldNTFS:M,rawExtraFieldUnix:W,rawExtraFieldAES:S,extraFieldLength:R}})(i=t.assign({},i,s.resolvedOptions,n.resolvedOptions,a.resolvedOptions,{internalFileAttribute:n.resolvedOptions.internalFileAttributes,externalFileAttribute:s.resolvedOptions.externalFileAttributes,signature:i[jt],offset:A.offset-o,diskNumberStart:B})),E=(({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=Mi(i),t&&(r=4,fi(g,0,T))),{dataDescriptorArray:i,dataDescriptorView:g,dataDescriptorOffset:r}})(i),w=bi(C.localHeaderArray,E.dataDescriptorArray);c=await(async(A,e,g,i,s)=>{const{files:a,writer:n}=A,{keepOrder:o,dataDescriptor:B,signal:c}=s,{headerInfo:C}=i,E=A.options.usdz,w=A.lastFileEntry;let d,h,F,D,Y,Q,m,y={},S=0;a.set(e,y),A.lastFileEntry=y;try{let h;o&&(h=w&&w.lock,y.lock=new u(A=>F=A)),s.bufferedWrite||!o||A.writerLocked||A.bufferedWrites||!B?(d=!0,A.bufferedWrites++,m=s.createTempStream?await s.createTempStream():new p(_,_,{highWaterMark:$}),m.size=0,await Dt(n)):(m=n,await M()),await Dt(m);const{diskOffset:G}=n;if(A.addSplitZipSignature){delete A.addSplitZipSignature;const e=new I(4);fi(Mi(e),0,R),await ui(n,e),A.offset+=4}E&&!d&&Ci(i,A.offset-G);const{localHeaderArray:U}=C;d||(await h,await b());const K=n.diskNumber,T=di(A,n);if(y.diskNumberStart=K,d||(Y=!0,Q=n.size,await ui(m,U)),y=await(async(A,e,{diskNumberStart:g,lock:i},s,a,n)=>{const{headerInfo:o,dataDescriptorInfo:B,metadataSize:c}=s,{headerArray:I,headerView:C,lastModDate:E,rawLastModDate:w,encrypted:d,compressed:u,version:h,compressionMethod:F,rawExtraFieldZip64:D,localExtraFieldZip64Length:Y,rawExtraFieldExtendedTimestamp:Q,extraFieldExtendedTimestampFlag:p,rawExtraFieldNTFS:m,rawExtraFieldUnix:f,rawExtraFieldAES:y}=o,{dataDescriptorArray:S}=B,{rawFilename:M,lastAccessDate:b,creationDate:G,password:U,rawPassword:K,level:R,zip64:T,zip64UncompressedSize:z,zip64CompressedSize:k,zipCrypto:x,dataDescriptor:H,directory:L,executable:N,versionMadeBy:J,rawComment:V,rawExtraField:Z,useWebWorkers:P,transferStreams:q,onstart:X,onprogress:v,onend:j,signal:$,encryptionStrength:AA,extendedTimestamp:eA,msDosCompatible:tA,internalFileAttributes:gA,externalFileAttributes:iA,uid:rA,gid:aA,unixMode:nA,setuid:oA,setgid:BA,sticky:cA,unixExternalUpper:lA,msdosAttributesRaw:IA,msdosAttributes:CA,useCompressionStream:EA,passThrough:wA}=n,dA={lock:i,versionMadeBy:J,zip64:T,directory:!!L,executable:!!N,filenameUTF8:!0,rawFilename:M,commentUTF8:!0,rawComment:V,rawExtraFieldZip64:D,localExtraFieldZip64Length:Y,rawExtraFieldExtendedTimestamp:Q,rawExtraFieldNTFS:m,rawExtraFieldUnix:f,rawExtraFieldAES:y,rawExtraField:Z,extendedTimestamp:eA,msDosCompatible:tA,internalFileAttributes:gA,externalFileAttributes:iA,diskNumberStart:g,uid:rA,gid:aA,unixMode:nA,setuid:oA,setgid:BA,sticky:cA,unixExternalUpper:lA,msdosAttributesRaw:IA,msdosAttributes:CA};let{signature:uA,uncompressedSize:hA}=n,FA=0;wA||(hA=0);const{writable:DA}=e;if(A){A.chunkSize=sA(a);const t=A.readable,g=A.size,i={options:{codecType:Ie,level:R,rawPassword:K,password:U,encryptionStrength:AA,zipCrypto:d&&x,passwordVerification:d&&x&&w>>8&O,signed:!wA,compressed:u&&!wA,encrypted:d&&!wA,useWebWorkers:P,useCompressionStream:EA,transferStreams:q},config:a,streamOptions:{signal:$,size:g,onstart:X,onprogress:v,onend:j}};try{const A=await ze({readable:t,writable:DA},i);if(FA=A.outputSize,e.size+=FA,wA||(hA=A.inputSize,uA=A.signature),!k&&FA>=W||!z&&hA>=W)throw new l(gi)}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:n})=>{const{headerView:o,encrypted:B}=g,{dataDescriptorView:c,dataDescriptorOffset:l}=i;B&&!a||A===_||(fi(o,10,A),n&&fi(c,l,A)),s?n&&(yi(c,l+4,r(e)),yi(c,l+12,r(t))):(fi(o,14,e),fi(o,18,t),n&&(fi(c,l+4,e),fi(c,l+8,t)))})({signature:uA,compressedSize:FA,uncompressedSize:hA,headerInfo:o,dataDescriptorInfo:B},n),H&&await ui(e,S),t.assign(dA,{uncompressedSize:hA,compressedSize:FA,lastModDate:E,rawLastModDate:w,creationDate:G,lastAccessDate:b,encrypted:d,zipCrypto:x,size:c+FA,compressionMethod:F,version:h,headerArray:I,headerView:C,signature:uA,extraFieldExtendedTimestampFlag:p,zip64UncompressedSize:z,zip64CompressedSize:k}),dA})(g,m,y,i,A.config,s),d||(Y=!1),a.set(e,y),y.filename=e,d){if(await u.all([m.writable.getWriter().close(),h]),await M(),D=!0,Q=n.size,await b(),y.diskNumberStart=n.diskNumber,y.offset=di(A,n),E){const e=i.metadataSize;Ci(i,A.offset-n.diskOffset),y.size+=i.metadataSize-e}(({rawFilename:A,encrypted:e,zip64:t,localExtraFieldZip64Length:g,signature:i,compressedSize:s,uncompressedSize:a,zip64UncompressedSize:n,zip64CompressedSize:o},B,{dataDescriptor:c})=>{if(c||(e||fi(B,14,i),o||fi(B,18,s),n||fi(B,22,a)),t&&g){const e=X+bi(A)+4;yi(B,e,r(a)),yi(B,e+8,r(s))}})(y,C.localHeaderView,s),await ui(n,C.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=bi(A),S+=e}}),{preventClose:!0,preventAbort:!0,signal:t})}finally{g.releaseLock()}})(m.readable,n,c),n.size+=m.size,D=!1}else y.diskNumberStart=K,y.offset=T;return A.offset+=y.size,y}catch(t){if(D||Y){if(A.hasCorruptedEntries=!0,t)try{t.corruptedEntry=!0}catch{}A.offset+=n.size-Q,d&&(A.offset+=S)}throw a.delete(e),t}finally{d&&A.bufferedWrites--,F&&F(),h&&h()}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(){bi(C.localHeaderArray)>n.availableSize&&(n.availableSize=0,await ui(n,new I))}})(A,e,g,{headerInfo:C,dataDescriptorInfo:E,metadataSize:w},i)}catch(t){throw A.files.delete(e),t}return t.assign(c,{name:e,comment:o,extraField:B}),new ig(c)})(i,A,e,g),s.add(o),await o}catch(e){throw B&&i.filenames.delete(A),e}finally{s.delete(o);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 I,t={}){const{pendingAddFileCalls:g,writer:i}=this,{writable:s}=i;if(bi(A)>U)throw new l(qg);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:n,extraFieldExtendedTimestampFlag:o,lastModDate:B,zip64UncompressedSize:c,zip64CompressedSize:C,uncompressedSize:E,compressedSize:w}=t,d=t.offset>=W,u=t.diskNumberStart>=U;let h,F;if(d||u||c||C){const A=4+(c?8:0)+(C?8:0)+(d?8:0)+(u?4:0),e=wi(A);e.uint16(1),e.uint16(A-4),c&&e.uint64(E),C&&e.uint64(w),d&&e.uint64(t.offset),u&&e.uint32(t.diskNumberStart),h=e.array}else h=new I;t.rawExtraFieldZip64=h,t.zip64Offset=d,t.zip64DiskNumberStart=u;const D=Fi(B);if(n&&Di(D)){const A=wi(9);A.uint16(N),A.uint16(5),A.uint8(o),A.uint32(D),F=A.array}else F=new I;t.rawExtraFieldExtendedTimestamp=F;const Y=bi(h,g,r,s,F,a);if(Y>U)throw new l(Ai);e+=46+bi(A,i)+Y}return e})(A.files),{cdStartDiskNumber:s,cdStartDiskOffset:a}=await(async(A,t,g)=>{const{files:i,writer:r}=A,s=new I(t);await Dt(r);let a=0,n=0,o=r.diskNumber,B=r.diskOffset;for(const[A,t]of e.from(i.values()).entries()){const{offset:e,rawFilename:c,rawExtraFieldZip64:l,rawExtraFieldAES:C,rawExtraFieldExtendedTimestamp:E,rawExtraFieldNTFS:w,rawExtraFieldUnix:d,rawExtraField:u,rawComment:h,versionMadeBy:F,headerArray:D,headerView:Y,zip64UncompressedSize:Q,zip64CompressedSize:p,zip64DiskNumberStart:m,zip64Offset:f,internalFileAttributes:y,externalFileAttributes:S,diskNumberStart:M,uncompressedSize:b,compressedSize:G}=t,O=bi(l,C,E,w,d,u),K=46+bi(c,h)+O;a+K-n>r.availableSize&&(await ui(r,s.slice(n,a)),n=a,r.availableSize=0,await ui(r,new I)),0==A&&(o=r.diskNumber,B=r.diskOffset),Q||fi(Y,18,b),p||fi(Y,14,G),(f||m)&&45>t.version&&mi(Y,0,45);const R=wi(K);if(R.uint32(z),R.uint16(F),R.bytes(D.subarray(0,24)),R.uint16(O),R.uint16(bi(h)),R.uint16(m?U:M),R.uint16(y),R.uint32(S),R.uint32(f?W:e),R.bytes(c),R.bytes(l),R.bytes(C),R.bytes(E),R.bytes(w),R.bytes(d),R.bytes(u),R.bytes(h),Si(s,R.array,a),a+=K,g.onprogress)try{await g.onprogress(A+1,i.size,new ig(t))}catch{}}return await ui(r,n?s.slice(n):s),{cdStartDiskNumber:o,cdStartDiskOffset:B}})(A,i,g);await(async(A,e,t,g)=>{const{writer:i}=A,{cdStartDiskNumber:s,cdStartDiskOffset:a}=g;let{directoryDataLength:n}=g,o=A.files.size,B=s,c=A.offset-a-(s?A.initialOffset:0),C=i.diskNumber;i.availableSize<L&&C++;let E=Qi(A,t,Nt);if(!(W>c&&W>n&&U>o&&U>C)){if(!1===E)throw new l(gi);E=!0}const w=bi(e);if(w>U)throw new l(qg);const d=wi(E?98:L);bi(d.array)+w>i.availableSize&&(i.availableSize=0,await ui(i,new I)),C=i.diskNumber,E&&(d.uint32(x),d.uint64(44),d.uint16(45),d.uint16(45),d.uint32(C),d.uint32(B),d.uint64(o),d.uint64(o),d.uint64(n),d.uint64(c),d.uint32(H),d.uint32(C),d.uint64(r(A.offset)+r(n)-r(i.diskOffset)-r(i.diskNumber?A.initialOffset:0)),d.uint32(C+1),Qi(A,t,"supportZip64SplitFile",!0)&&(C=U,B=U),o=U,c=W,n=W),d.uint32(k),d.uint16(C),d.uint16(B),d.uint16(o),d.uint16(o),d.uint32(n),d.uint32(c),d.uint16(w),await ui(i,d.array),w&&await ui(i,e)})(A,t,g,{cdStartDiskNumber:s,cdStartDiskOffset:a,directoryDataLength:i})})(this,A,t),Qi(this,t,Ig)||await s.getWriter().close(),i.getData?i.getData():s}}function Ii(A,e,t){A.pendingAddFileCalls.add(e),e.catch(A=>{try{t(A)}catch{}})}function Ci(A,e){const{headerInfo:t}=A;let g,{localHeaderArray:i,extraFieldLength:r}=t,s=64-(e+bi(i))%64;4>s&&(s+=64);const a=new I(s),n=Mi(a);mi(n,0,6534),mi(n,2,s-4);const o=i;t.localHeaderArray=i=new I(bi(o)+s),Si(i,o),Si(i,a,bi(o)),g=Mi(i),mi(g,28,r+s),t.localHeaderView=g,A.metadataSize+=s}function Ei(A){if(A===_)return new I;{const e=new I(4);Mi(e).setUint32(0,A,!0);let t=4;for(;t>1&&0===e[t-1];)t--;return e.subarray(0,t)}}function wi(A){const e=new I(A),t=Mi(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,r(A)),g+=8},bytes:A=>{Si(e,A,g),g+=bi(A)},skip:A=>g+=A}}function di(A,e){return A.offset-e.diskOffset-(e.diskNumber?A.initialOffset:0)}async function ui(A,e){const{writable:t}=A,g=t.getWriter();try{await g.ready,A.size+=bi(e),await g.write(e)}finally{g.releaseLock()}}function hi(A){if(A)return(r(A.getTime())+r(116444736e5))*r(1e4)}function Fi(A){return s.floor(A.getTime()/1e3)}function Di(A){return A>=ei&&ti>=A}function Yi(A){return s.min(ti,s.max(ei,A))}function Qi(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 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 Mi(A){return new w(A.buffer,A.byteOffset,A.byteLength)}function bi(...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:r,rawLastModDate:s,rawFilename:a,zip64CompressedSize:n,zip64UncompressedSize:o,extraFieldLength:B}){const c=wi(26),l=c.array,I=Mi(l);if(c.uint16(A),c.uint16(e),c.uint16(t),s===_){const A=new E(1),e=Mi(A);mi(e,0,(r.getHours()<<6|r.getMinutes())<<5|r.getSeconds()/2),mi(e,2,(r.getFullYear()-1980<<4|r.getMonth()+1)<<5|r.getDate()),s=A[0]}return c.uint32(s),c.skip(4),n||i!==_?c.uint32(n?W:i):c.skip(4),o||g!==_?c.uint32(o?W:g):c.skip(4),c.uint16(bi(a)),c.uint16(B),{headerArray:l,headerView:I,rawLastModDate:s}}function Wi(A,e,t,g,i){let r=0;return e&&(r|=J),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}try{aA({baseURI:void 0===D&&"undefined"==typeof location?require("url").pathToFileURL(__filename).href:void 0===D?location.href:G&&"SCRIPT"===G.tagName.toUpperCase()&&G.src||new c("zip-legacy.min.js",D.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=oA.indexOf(A[g])<<18|oA.indexOf(A[g+1])<<12|(63&oA.indexOf(A[g+2]))<<6|63&oA.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++],n=t-a;g(t+s);for(let A=0;s>A;A++)e[t++]=e[n+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+=oA[t>>18&63]+oA[t>>12&63]+oA[t>>6&63]+oA[63&t]}const i=t-g;if(1===i){const t=A[g]<<16;e+=oA[t>>18&63]+oA[t>>12&63]+"=="}else if(2===i){const t=A[g]<<16|A[g+1]<<8;e+=oA[t>>18&63]+oA[t>>12&63]+oA[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 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: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)),n=A-3*s.floor(r/4);let o=0;for(let A=n;n+e>A&&A<a.length;A++)i[A-n]=a.charCodeAt(A),o++;return o<i.length?i.subarray(0,o):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 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+=Q(i):e.pending=i+e.pending}getData(){return this.data+Q(this.pending)}},A.ERR_AMBIGUOUS_ARCHIVE=fg,A.ERR_BAD_FORMAT=Eg,A.ERR_CENTRAL_DIRECTORY_NOT_FOUND=ug,A.ERR_DUPLICATED_NAME=Pg,A.ERR_ENCRYPTED=Dg,A.ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND=dg,A.ERR_EOCDR_NOT_FOUND=wg,A.ERR_EXTRAFIELD_ZIP64_NOT_FOUND=Fg,A.ERR_HTTP_RANGE=Ve,A.ERR_INVALID_COMMENT=qg,A.ERR_INVALID_COMPRESSED_DATA=se,A.ERR_INVALID_ENCRYPTION_STRENGTH=_g,A.ERR_INVALID_ENTRY_COMMENT=Xg,A.ERR_INVALID_ENTRY_NAME=vg,A.ERR_INVALID_EXTRAFIELD_DATA=Ai,A.ERR_INVALID_EXTRAFIELD_TYPE=$g,A.ERR_INVALID_PASSWORD=hA,A.ERR_INVALID_SIGNATURE=FA,A.ERR_INVALID_UNCOMPRESSED_SIZE=re,A.ERR_INVALID_VERSION=jg,A.ERR_LOCAL_FILE_HEADER_NOT_FOUND=hg,A.ERR_OVERLAPPING_ENTRY=mg,A.ERR_SPLIT_ZIP_FILE=pg,A.ERR_UNDEFINED_READER=ri,A.ERR_UNDEFINED_UNCOMPRESSED_SIZE=ii,A.ERR_UNSUPPORTED_COMPRESSION=Qg,A.ERR_UNSUPPORTED_ENCRYPTION=Yg,A.ERR_UNSUPPORTED_FORMAT=gi,A.ERR_ZIP_NOT_EMPTY=si,A.HttpRangeReader=class extends wt{constructor(A,e={}){super(A,t.assign({},e,{useRangeHeader:!0}))}},A.HttpReader=wt,A.Reader=$e,A.SplitDataReader=dt,A.SplitDataWriter=ut,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 u((i,r)=>{t.assign(e,{onload:({target:A})=>i(A.result),onerror:()=>r(e.error)}),e.readAsText(g,A)})}}},A.Uint8ArrayReader=class extends $e{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 At{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=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=li,A.ZipWriterStream=class{constructor(A={}){const{readable:e,writable:t}=new p;this.readable=e,this.zipWriter=new li(t,A),this.pendingAddFileCalls=new o}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 Ii(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 Ii(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=aA,A.getMimeType=()=>"application/octet-stream",A.terminateWorkers=async()=>{await u.allSettled(Ue.map(A=>(Ne(A),A.terminate())))}});
|
|
1
|
+
((e,t)=>{"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).t={})})(this,function(e){"use strict";const{Array:t,Object:r,String:n,Number:s,BigInt:a,Math:i,Date:o,Map:c,Set:l,Response:d,URL:u,Error:w,Uint8Array:f,Uint16Array:p,Uint32Array:h,DataView:m,Blob:y,Promise:b,TextEncoder:g,TextDecoder:x,document:S,crypto:z,btoa:F,TransformStream:k,ReadableStream:v,WritableStream:E,CompressionStream:P,DecompressionStream:C,navigator:T,Worker:V}="undefined"!=typeof globalThis?globalThis:this||self;var q=void 0!==S?S.currentScript:null;const D=4294967295,U=65535,H=255,W=67324752,N=134695760,I=N,M=33639248,A=101010256,K=101075792,R=117853008,G=22,L=20,X=21589,O=2048,Z=16384,j=2048,Y=1024,J="/",B=30,Q=new o(2107,11,31),_=new o(1980,0,1),$=void 0,ee=1/0,te="undefined",re="function",ne=new f;let se=2;try{typeof T!=te&&T.hardwareConcurrency&&(se=T.hardwareConcurrency)}catch{}const ae={workerURI:"./core/web-worker-wasm.js",wasmURI:"./core/streams/zlib-wasm/zlib-streams.wasm",chunkSize:65536,maxWorkers:se,terminateWorkerTimeout:5e3,workerStarvationTimeout:5e3,useWebWorkers:!0,useCompressionStream:!0,CompressionStream:typeof P!=te&&P,DecompressionStream:typeof C!=te&&C},ie=["baseURI","wasmURI","workerURI","chunkSize","maxWorkers","terminateWorkerTimeout","workerStarvationTimeout","useCompressionStream","useWebWorkers","CompressionStream","DecompressionStream","CompressionStreamZlib","DecompressionStreamZlib"],oe=r.assign({},ae);function ce(){return oe}function le(e){return i.max(e.chunkSize,64)}function de(e){for(const t of ie){const r=e[t];r!==$&&(oe[t]=r)}}const ue=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258],we=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],fe=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],pe=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],he=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],me=new f(288);me.fill(8,0,144),me.fill(9,144,256),me.fill(7,256,280),me.fill(8,280,288);const ye=new f(30).fill(5);function be(e){const t=new p(16);for(const r of e)t[r]++;t[0]=0;const r=new p(17);for(let e=1;15>=e;e++)r[e+1]=r[e]+t[e];const n=new p(e.length);for(let t=0;t<e.length;t++)e[t]&&(n[r[e[t]]++]=t);return{i:t,symbols:n}}const ge="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",xe=[[],[],[],[],[],[],[],[]];for(let e=0;256>e;e++){let t=e;for(let e=0;8>e;e++)t=1&t?t>>>1^3988292384:t>>>1;xe[0][e]=t}for(let e=0;256>e;e++)for(let t=1;8>t;t++){const r=xe[t-1][e];xe[t][e]=r>>>8^xe[0][255&r]}const[Se,ze,Fe,ke,ve,Ee,Pe,Ce]=xe;class Te{constructor(e){this.o=e||-1}append(e){let t=0|this.o;const r=0|e.length;let n=0;if(r>=8&&e.buffer){const s=new m(e.buffer,e.byteOffset,r),a=r-8;for(;a>=n;n+=8){const e=t^s.getInt32(n,!0),r=s.getInt32(n+4,!0);t=Ce[255&e]^Pe[e>>>8&255]^Ee[e>>>16&255]^ve[e>>>24&255]^ke[255&r]^Fe[r>>>8&255]^ze[r>>>16&255]^Se[r>>>24&255]}}for(;r>n;n++)t=t>>>8^Se[255&(t^e[n])];this.o=t}get(){return~this.o}}class Ve extends k{constructor(){let e;const t=new Te;super({transform(e,r){t.append(e),r.enqueue(e)},flush(){const r=new f(4);new m(r.buffer).setUint32(0,t.get()),e.value=r}}),e=this}}function qe(e){if(typeof g==te){const t=new f((e=unescape(encodeURIComponent(e))).length);for(let r=0;r<t.length;r++)t[r]=e.charCodeAt(r);return t}return(new g).encode(e)}const De={concat(e,t){if(0===e.length||0===t.length)return e.concat(t);const r=e[e.length-1],n=De.l(r);return 32===n?e.concat(t):De.u(t,n,0|r,e.slice(0,e.length-1))},p(e){const t=e.length;if(0===t)return 0;const r=e[t-1];return 32*(t-1)+De.l(r)},h(e,t){if(32*e.length<t)return e;const r=(e=e.slice(0,i.ceil(t/32))).length;return t&=31,r>0&&t&&(e[r-1]=De.m(t,e[r-1]&2147483648>>t-1,1)),e},m:(e,t,r)=>32===e?t:(r?0|t:t<<32-e)+1099511627776*e,l:e=>i.round(e/1099511627776)||32,u(e,t,r,n){for(void 0===n&&(n=[]);t>=32;t-=32)n.push(r),r=0;if(0===t)return n.concat(e);for(let s=0;s<e.length;s++)n.push(r|e[s]>>>t),r=e[s]<<32-t;const s=e.length?e[e.length-1]:0,a=De.l(s);return n.push(De.m(t+a&31,t+a>32?r:n.pop(),1)),n}},Ue={bytes:{S(e){const t=De.p(e)/8,r=new f(t);let n;for(let s=0;t>s;s++)3&s||(n=e[s/4]),r[s]=n>>>24,n<<=8;return r},F(e){const t=[];let r,n=0;for(r=0;r<e.length;r++)n=n<<8|e[r],3&~r||(t.push(n),n=0);return 3&r&&t.push(De.m(8*(3&r),n)),t}}},He=class{constructor(e){const t=this;t.blockSize=512,t.k=[1732584193,4023233417,2562383102,271733878,3285377520],t.v=[1518500249,1859775393,2400959708,3395469782],e?(t.P=e.P.slice(0),t.C=e.C.slice(0),t.T=e.T):t.reset()}reset(){const e=this;return e.P=e.k.slice(0),e.C=[],e.T=0,e}update(e){const t=this;"string"==typeof e&&(e=Ue.V.F(e));const r=t.C=De.concat(t.C,e),n=t.T,s=t.T=n+De.p(e);if(s>9007199254740991)throw new w("Cannot hash more than 2^53 - 1 bits");const a=new h(r);let i=0;for(let e=t.blockSize+n-(t.blockSize+n&t.blockSize-1);s>=e;e+=t.blockSize)t.q(a.subarray(16*i,16*(i+1))),i+=1;return r.splice(0,16*i),t}D(){const e=this;let t=e.C;const r=e.P;t=De.concat(t,[De.m(1,1)]);for(let e=t.length+2;15&e;e++)t.push(0);for(t.push(i.floor(e.T/4294967296)),t.push(0|e.T);t.length;)e.q(t.splice(0,16));return e.reset(),r}U(e,t,r,n){return e>19?e>39?e>59?e>79?void 0:t^r^n:t&r|t&n|r&n:t^r^n:t&r|~t&n}H(e,t){return t<<e|t>>>32-e}q(e){const r=this,n=r.P,s=t(80);for(let t=0;16>t;t++)s[t]=e[t];let a=n[0],o=n[1],c=n[2],l=n[3],d=n[4];for(let e=0;79>=e;e++){16>e||(s[e]=r.H(1,s[e-3]^s[e-8]^s[e-14]^s[e-16]));const t=r.H(5,a)+r.U(e,o,c,l)+d+s[e]+r.v[i.floor(e/20)]|0;d=l,l=c,c=r.H(30,o),o=a,a=t}n[0]=n[0]+a|0,n[1]=n[1]+o|0,n[2]=n[2]+c|0,n[3]=n[3]+l|0,n[4]=n[4]+d|0}},We={importKey:e=>new We.W(Ue.bytes.F(e)),N(e,t,r,n){if(r=r||1e4,0>n||0>r)throw new w("invalid params to pbkdf2");const s=1+(n>>5)<<2;let a,i,o,c,l;const d=new ArrayBuffer(s),u=new m(d);let f=0;const p=De;for(t=Ue.bytes.F(t),l=1;(s||1)>f;l++){for(a=i=e.encrypt(p.concat(t,[l])),o=1;r>o;o++)for(i=e.encrypt(i),c=0;c<i.length;c++)a[c]^=i[c];for(o=0;(s||1)>f&&o<a.length;o++)u.setInt32(f,a[o]),f+=4}return d.slice(0,n/8)},W:class{constructor(e){const t=this,r=t.I=He,n=[[],[]];t.M=[new r,new r];const s=t.M[0].blockSize/32;e.length>s&&(e=(new r).update(e).D());for(let t=0;s>t;t++)n[0][t]=909522486^e[t],n[1][t]=1549556828^e[t];t.M[0].update(n[0]),t.M[1].update(n[1]),t.A=new r(t.M[0])}reset(){const e=this;e.A=new e.I(e.M[0]),e.K=!1}update(e){this.K=!0,this.A.update(e)}digest(){const e=this,t=e.A.D(),r=new e.I(e.M[1]).update(t).D();return e.reset(),r}encrypt(e){if(this.K)throw new w("encrypt on already updated hmac called!");return this.update(e),this.digest(e)}}},Ne=typeof z!=te&&typeof z.getRandomValues==re,Ie="Invalid password",Me="Invalid signature",Ae="zipjs-abort-check-password";function Ke(e){if(Ne)return z.getRandomValues(e);throw new w("Crypto API not supported")}const Re=16,Ge={name:"PBKDF2"},Le=r.assign({hash:{name:"HMAC"}},Ge),Xe=r.assign({iterations:1e3,hash:{name:"SHA-1"}},Ge),Oe=["deriveBits"],Ze=[8,12,16],je=[16,24,32],Ye=10,Je=[0,0,0,0],Be=typeof z!=te,Qe=Be&&z.subtle,_e=Be&&typeof Qe!=te,$e=Ue.bytes,et=class{constructor(e){const t=this;t.R=[[[],[],[],[],[]],[[],[],[],[],[]]],t.R[0][0][0]||t.G();const r=t.R[0][4],n=t.R[1],s=e.length;let a,i,o,c=1;if(4!==s&&6!==s&&8!==s)throw new w("invalid aes key size");for(t.v=[i=e.slice(0),o=[]],a=s;4*s+28>a;a++){let e=i[a-1];(a%s===0||8===s&&a%s===4)&&(e=r[e>>>24]<<24^r[e>>16&255]<<16^r[e>>8&255]<<8^r[255&e],a%s===0&&(e=e<<8^e>>>24^c<<24,c=c<<1^283*(c>>7))),i[a]=i[a-s]^e}for(let e=0;a;e++,a--){const t=i[3&e?a:a-4];o[e]=4>=a||4>e?t:n[0][r[t>>>24]]^n[1][r[t>>16&255]]^n[2][r[t>>8&255]]^n[3][r[255&t]]}}encrypt(e){return this.L(e,0)}decrypt(e){return this.L(e,1)}G(){const e=this.R[0],t=this.R[1],r=e[4],n=t[4],s=[],a=[];let i,o,c,l;for(let e=0;256>e;e++)a[(s[e]=e<<1^283*(e>>7))^e]=e;for(let d=i=0;!r[d];d^=o||1,i=a[i]||1){let a=i^i<<1^i<<2^i<<3^i<<4;a=a>>8^255&a^99,r[d]=a,n[a]=d,l=s[c=s[o=s[d]]];let u=16843009*l^65537*c^257*o^16843008*d,w=257*s[a]^16843008*a;for(let r=0;4>r;r++)e[r][d]=w=w<<24^w>>>8,t[r][a]=u=u<<24^u>>>8}for(let r=0;5>r;r++)e[r]=e[r].slice(0),t[r]=t[r].slice(0)}L(e,t){if(4!==e.length)throw new w("invalid aes block size");const r=this.v[t],n=r.length/4-2,s=[0,0,0,0],a=this.R[t],i=a[0],o=a[1],c=a[2],l=a[3],d=a[4];let u,f,p,h=e[0]^r[0],m=e[t?3:1]^r[1],y=e[2]^r[2],b=e[t?1:3]^r[3],g=4;for(let e=0;n>e;e++)u=i[h>>>24]^o[m>>16&255]^c[y>>8&255]^l[255&b]^r[g],f=i[m>>>24]^o[y>>16&255]^c[b>>8&255]^l[255&h]^r[g+1],p=i[y>>>24]^o[b>>16&255]^c[h>>8&255]^l[255&m]^r[g+2],b=i[b>>>24]^o[h>>16&255]^c[m>>8&255]^l[255&y]^r[g+3],g+=4,h=u,m=f,y=p;for(let e=0;4>e;e++)s[t?3&-e:e]=d[h>>>24]<<24^d[m>>16&255]<<16^d[y>>8&255]<<8^d[255&b]^r[g++],u=h,h=m,m=y,y=b,b=u;return s}},tt=class{constructor(e,t){this.X=e,this.O=t,this.Z=t}reset(){this.Z=this.O}update(e){return this.j(this.X,e,this.Z)}Y(e){if(255&~(e>>24))e+=1<<24;else{let t=e>>16&255,r=e>>8&255,n=255&e;255===t?(t=0,255===r?(r=0,255===n?n=0:++n):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=n}return e}J(e){0===(e[0]=this.Y(e[0]))&&(e[1]=this.Y(e[1]))}j(e,t,r){let n;if(!(n=t.length))return[];const s=De.p(t);for(let s=0;n>s;s+=4){this.J(r);const n=e.encrypt(r);t[s]^=n[0],t[s+1]^=n[1],t[s+2]^=n[2],t[s+3]^=n[3]}return De.h(t,s)}},rt=We.W;let nt=Be&&_e&&typeof Qe.importKey==re,st=Be&&_e&&typeof Qe.deriveBits==re;class at extends k{constructor({password:e,rawPassword:t,encryptionStrength:r,checkPasswordOnly:n}){super({start(){ot(this,e,t,r)},async transform(e,t){const r=this,{password:s,strength:a,B:i,ready:o}=r;s?(await(async(e,t,r,n)=>{const s=await lt(e,t,r,wt(n,0,Ze[t])),a=wt(n,Ze[t]);if(s[0]!=a[0]||s[1]!=a[1])throw new w(Ie)})(r,a,s,wt(e,0,Ze[a]+2)),e=wt(e,Ze[a]+2),n?t.error(new w(Ae)):i()):await o;const c=new f(e.length-Ye-(e.length-Ye)%Re);t.enqueue(ct(r,e,c,0,Ye,!0))},async flush(e){const{_:t,$:r,pending:n,ready:s}=this;if(r&&t){await s;const a=wt(n,0,n.length-Ye),i=wt(n,n.length-Ye);let o=ne;if(a.length){const e=pt($e,a);r.update(e);const n=t.update(e);o=ft($e,n)}const c=wt(ft($e,r.digest()),0,Ye);let l=n.length<Ye?1:0;for(let e=0;Ye>e;e++)l|=c[e]^i[e];if(l)throw new w(Me);e.enqueue(o)}}})}}class it extends k{constructor({password:e,rawPassword:t,encryptionStrength:r}){let n;super({start(){ot(this,e,t,r)},async transform(e,t){const r=this,{password:n,strength:s,B:a,ready:i}=r;let o=ne;n?(o=await(async(e,t,r)=>{const n=Ke(new f(Ze[t]));return ut(n,await lt(e,t,r,n))})(r,s,n),a()):await i;const c=new f(o.length+e.length-e.length%Re);c.set(o,0),t.enqueue(ct(r,e,c,o.length,0))},async flush(e){const{_:t,$:r,pending:s,ready:a}=this;if(r&&t){await a;let i=ne;if(s.length){const e=t.update(pt($e,s));r.update(e),i=ft($e,e)}n.signature=ft($e,r.digest()).slice(0,Ye),e.enqueue(ut(i,n.signature))}}}),n=this}}function ot(e,t,n,s){r.assign(e,{ready:new b(t=>e.B=t),password:dt(t,n),strength:s-1,pending:ne})}function ct(e,t,r,n,s,a){const{_:i,$:o,pending:c}=e;c.length&&(t=ut(c,t));const l=t.length-s;let d;for(r=((e,t)=>{if(t&&t>e.length){const r=e;(e=new f(t)).set(r,0)}return e})(r,n+(l-l%Re)),d=0;l-Re>=d;d+=Re){const e=pt($e,wt(t,d,d+Re));a&&o.update(e);const s=i.update(e);a||o.update(s),r.set(ft($e,s),d+n)}return e.pending=wt(t,d),r}async function lt(e,n,s,a){e.password=null;const i=await(async(e,t,r,n,s)=>{if(!nt)return We.importKey(t);try{return await Qe.importKey("raw",t,r,!1,s)}catch{return nt=!1,We.importKey(t)}})(0,s,Le,0,Oe),o=await(async(e,t,r)=>{if(!st)return We.N(t,e.salt,Xe.iterations,r);try{return await Qe.deriveBits(e,t,r)}catch{return st=!1,We.N(t,e.salt,Xe.iterations,r)}})(r.assign({salt:a},Xe),i,8*(2*je[n]+2)),c=new f(o),l=pt($e,wt(c,0,je[n])),d=pt($e,wt(c,je[n],2*je[n])),u=wt(c,2*je[n]);return r.assign(e,{keys:{key:l,ee:d,passwordVerification:u},_:new tt(new et(l),t.from(Je)),$:new rt(d)}),u}function dt(e,t){return t===$?qe(e):t}function ut(e,t){let r=e;return e.length+t.length&&(r=new f(e.length+t.length),r.set(e,0),r.set(t,e.length)),r}function wt(e,t,r){return e.subarray(t,r)}function ft(e,t){return e.S(t)}function pt(e,t){return e.F(t)}class ht extends k{constructor({password:e,rawPassword:t,passwordVerification:r,checkPasswordOnly:n}){super({start(){yt(this,e,t,r)},transform(e,t){const r=this;if(r.password||r.rawPassword){const t=bt(r,e.subarray(0,12));if(r.password=r.rawPassword=null,0!=(t.at(-1)^r.passwordVerification))throw new w(Ie);e=e.subarray(12)}n?t.error(new w(Ae)):t.enqueue(bt(r,e))}})}}class mt extends k{constructor({password:e,rawPassword:t,passwordVerification:r}){super({start(){yt(this,e,t,r)},transform(e,t){const r=this;let n,s;if(r.password||r.rawPassword){r.password=r.rawPassword=null;const t=Ke(new f(12));t[11]=r.passwordVerification,n=new f(e.length+t.length),n.set(gt(r,t),0),s=12}else n=new f(e.length),s=0;n.set(gt(r,e),s),t.enqueue(n)}})}}function yt(e,t,n,s){r.assign(e,{password:t,rawPassword:n,passwordVerification:s}),((e,t,n)=>{const s=[305419896,591751049,878082192];if(r.assign(e,{keys:s,te:new Te(s[0]),re:new Te(s[2])}),n)for(let t=0;t<n.length;t++)xt(e,n[t]);else for(let r=0;r<t.length;r++)xt(e,t.charCodeAt(r))})(e,t,n)}function bt(e,t){const r=new f(t.length);for(let n=0;n<t.length;n++)r[n]=St(e)^t[n],xt(e,r[n]);return r}function gt(e,t){const r=new f(t.length);for(let n=0;n<t.length;n++)r[n]=St(e)^t[n],xt(e,t[n]);return r}function xt(e,t){let[,r]=e.keys;e.te.append([t]);const n=~e.te.get();r=Ft(i.imul(Ft(r+zt(n)),134775813)+1),e.re.append([r>>>24]);const s=~e.re.get();e.keys=[n,r,s]}function St(e){const t=2|e.keys[2];return zt(i.imul(t,1^t)>>>8)}function zt(e){return 255&e}function Ft(e){return 4294967295&e}const kt="Invalid uncompressed size",vt="Invalid compressed data";class Et extends k{constructor(e,{chunkSize:t,CompressionStreamZlib:r,CompressionStream:n}){super({});const{compressed:s,encrypted:a,useCompressionStream:i,zipCrypto:o,signed:c,level:l,deflate64:d}=e,u=this;let w,f,p,h=super.readable;const y=c&&s&&!d&&(!a||o)&&!(!i||!n);a&&!o||!c||y||(w=new Ve,h=qt(h,w)),s&&(y?(p=new Pt,h=Dt(h,new n("gzip")),h=qt(h,p)):h=Vt(h,i,{level:l,chunkSize:t},n,r,n)),a&&(o?h=qt(h,new mt(e)):(f=new it(e),h=qt(h,f))),Tt(u,h,()=>{let e;a&&!o&&(e=f.signature),a&&!o||!c||(e=y?p.signature:new m(w.value.buffer).getUint32(0)),u.signature=e})}}class Pt extends k{constructor(){let e,t=10,r=new f(0);super({transform(e,n){if(t){const r=i.min(t,e.length);if(t-=r,!(e=e.subarray(r)).length)return}const s=r.length+e.length;if(8>=s){const t=new f(s);return t.set(r),t.set(e,r.length),void(r=t)}const a=s-8,o=new f(a),c=i.min(a,r.length);o.set(r.subarray(0,c),0),a>c&&o.set(e.subarray(0,a-c),c),n.enqueue(o);const l=new f(8),d=r.length-c;d&&l.set(r.subarray(c),0),l.set(e.subarray(a-c),d),r=l},flush(){const t=new m(r.buffer,r.byteOffset,r.byteLength);e.signature=t.getUint32(0,!0),e.uncompressedSize=t.getUint32(4,!0)}}),e=this}}class Ct extends k{constructor(e,{chunkSize:t,DecompressionStreamZlib:r,DecompressionStream:n}){super({});const{zipCrypto:s,encrypted:a,signed:i,signature:o,compressed:c,useCompressionStream:l,deflate64:d}=e;let u,f,p=super.readable;a&&(s?p=qt(p,new ht(e)):(f=new at(e),p=qt(p,f))),c&&(p=Vt(p,l,{chunkSize:t,deflate64:d},n,r,n),p=(e=>{const t=e.getReader();return new v({async pull(e){let r;try{r=await t.read()}catch(e){if(e&&e.message)throw e;const t=new w(vt);throw t.cause=e,t}const{value:n,done:s}=r;s?e.close():e.enqueue(n)},cancel:e=>t.cancel(e)})})(p)),a&&!s||!i||(u=new Ve,p=qt(p,u)),Tt(this,p,()=>{if((!a||s)&&i){const e=new m(u.value.buffer);if(o!=e.getUint32(0,!1))throw new w(Me)}})}}function Tt(e,t,n){t=qt(t,new k({flush:n})),r.defineProperty(e,"readable",{get:()=>t})}function Vt(e,t,r,n,s,a){const i=t&&n?n:s||a,o=r.deflate64?"deflate64-raw":"deflate-raw";let c;try{c=new i(o,r)}catch(e){if(!t)throw e;if(s)c=new s(o,r);else{if(!a)throw e;c=new a(o,r)}}return Dt(e,c)}function qt(e,t){return e.pipeThrough(t)}function Dt(e,t){const r=t.writable.getWriter(),n=e.getReader();return(async()=>{try{for(;;){await r.ready;const e=await n.read();if(e.done){await r.close();break}await r.write(e.value)}}catch(e){await(async(e,t)=>{try{await e.abort(t)}catch{}})(r,e),await(async(e,t)=>{try{await e.cancel(t)}catch{}})(n,e)}})(),t.readable}const Ut="data",Ht="deflate",Wt="inflate";class Nt extends k{constructor(e,t){super({});const n=this,{codecType:s}=e;let a;s.startsWith(Ht)?a=Et:s.startsWith(Wt)&&(a=Ct),n.outputSize=0;let i=0;const o=new a(e,t),c=super.readable,l=new k({transform(e,t){e&&e.length&&(i+=e.length,t.enqueue(e))},flush(){r.assign(n,{inputSize:i})}}),d=new k({transform(t,r){if(t&&t.length&&(r.enqueue(t),n.outputSize+=t.length,e.outputSize!==$&&n.outputSize>e.outputSize))throw new w(kt)},flush(){const{signature:e}=o;r.assign(n,{signature:e,inputSize:i})}});r.defineProperty(n,"readable",{get:()=>c.pipeThrough(l).pipeThrough(o).pipeThrough(d)})}}class It extends k{constructor(e){let t;1>e&&(e=65536),super({transform:(r,n)=>{if(t){const e=new f(t.length+r.length);e.set(t),e.set(r,t.length),r=e,t=null}let s=0;for(;r.length-s>e;)n.enqueue(r.slice(s,s+e)),s+=e;t=s?r.slice(s):r},flush(e){t&&t.length&&e.enqueue(t)}})}}const Mt={type:"module"},At="error";let Kt,Rt,Gt,Lt,Xt=!0;try{Xt=typeof structuredClone==re&&structuredClone(new DOMException("","AbortError")).code!==$}catch{}class Ot{constructor(e,{readable:t,writable:n},{options:s,config:a,ne:i,useWebWorkers:o,transferStreams:c,workerURI:l},d){const{signal:u}=i;return r.assign(e,{se:!0,ae:(e.ae||0)+1,readable:t.pipeThrough(new It(le(a))).pipeThrough(new Zt(i),{signal:u}),writable:n,options:r.assign({},s),workerURI:l,transferStreams:c,terminate:()=>new b(t=>{const{ie:r,se:n}=e;r?(n?e.oe=t:(r.terminate(),t()),e.ce=null):t()}),le(){if(e.se){const{oe:t}=e;t&&(e.oe=null,e.de=!0,e.ie.terminate(),t()),e.se=!1,d(e)}}}),Kt===$&&(Kt=typeof V!=te),(o&&Kt?Jt:Yt)(e,a)}}class Zt extends k{constructor({onstart:e,onprogress:t,size:r,onend:n}){let s=0;super({async start(){e&&await jt(e,r)},async transform(e,n){s+=e.length,t&&await jt(t,s,r),n.enqueue(e)},async flush(){n&&await jt(n,s)}})}}async function jt(e,...t){try{await e(...t)}catch{}}function Yt(e,t){return{run:()=>(async({options:e,readable:t,writable:r,le:n},s)=>{let a;try{if(!e.useCompressionStream)try{await void 0}catch{const t=e.codecType.startsWith(Ht)?s.CompressionStreamZlib:s.DecompressionStreamZlib;t&&!t.ue||(e.useCompressionStream=!0)}a=new Nt(e,s),await t.pipeThrough(a).pipeTo(r,{preventClose:!0,preventAbort:!0});const{signature:n,inputSize:i,outputSize:o}=a;return{signature:n,inputSize:i,outputSize:o}}catch(e){throw a&&(e.outputSize=a.outputSize),e}finally{n()}})(e,t)}}function Jt(e,t){const{baseURI:n,chunkSize:s}=t;let{wasmURI:a}=t;if(!e.ce){let i;typeof a==re&&(a=a());try{i=Qt(e.workerURI,n,e)}catch{return Kt=!1,Yt(e,t)}r.assign(e,{ie:i,de:!1,ce:{run:()=>(async(e,t)=>{let n,s;const a=new b((e,t)=>{n=e,s=t});r.assign(e,{reader:null,writer:null,we:n,fe:s,result:a});const{readable:i,options:o}=e,{writable:c,closed:l,pe:d}=(e=>{const t=new AbortController,{writable:r,readable:n}=new k,s=n.pipeTo(e,{preventClose:!0,preventAbort:!0,signal:t.signal});return s.catch(()=>{}),{writable:r,closed:s,pe:()=>t.abort()}})(e.writable);let u;try{u=$t({type:"start",options:o,config:t,readable:i,writable:c},e)}catch(t){d();try{await l}catch{}throw e.le(),t}u||r.assign(e,{reader:i.getReader(),writer:c.getWriter()});try{const e=await a;return await w(),await l,e}catch(e){await w(),d();try{await l}catch{}throw e}async function w(){if(!u&&!c.locked)try{await c.getWriter().close()}catch{}}})(e,{chunkSize:s,wasmURI:a,baseURI:n})}})}return e.ce}function Bt(e){const{ie:t}=e;if(t)try{t.terminate()}catch{}e.ce=null}function Qt(e,t,n,s,a=!0){let i,o,c;if(Gt===$||Rt!==e){const r=typeof e==re;o=r?e(a):e;const l=o.startsWith("data:"),d=o.startsWith("blob:");if(l||d){s===$&&(s=!1),s&&(c=Mt);try{i=new V(o,c)}catch(a){if(d)try{u.revokeObjectURL(o)}catch{}if(r&&d)return Qt(e,t,n,s,!1);if(s)throw a;return Qt(e,t,n,!0,!1)}}else{s===$&&(s=!0),s&&(c=Mt);try{o=new u(o,t)}catch{}try{i=new V(o,c)}catch(r){if(s)throw r;return Qt(e,t,n,!1,a)}}Rt=e,Gt=o,Lt=c}else i=new V(Gt,Lt);return i.addEventListener("message",e=>(async({data:e},t)=>{const{type:n,value:s,messageId:a,result:i,error:o}=e,{reader:c,writer:l,we:d,fe:u,le:p,ae:h}=t,m=()=>t.ae!=h;try{if(o){const{message:e,stack:t,code:n,name:s,outputSize:a}=o,i=new w(e);r.assign(i,{stack:t,code:n,name:s,outputSize:a}),y(i)}else{if("pull"==n){const{value:e,done:r}=await c.read();m()||$t({type:Ut,value:e,done:r,messageId:a},t)}n==Ut&&(await l.ready,await l.write(new f(s)),m()||$t({type:"ack",messageId:a},t)),"close"==n&&y(null,i)}}catch(o){m()||(Bt(t),y(o))}function y(e,t){m()||(e?u(e):d(t),l&&l.releaseLock(),p())}})(e,n)),i.addEventListener(At,e=>_t(e,n)),i.addEventListener("messageerror",e=>_t(e,n)),i}function _t(e,t){e.preventDefault&&e.preventDefault();const{fe:r,writer:n,le:s}=t;Bt(t),r&&(r(e.error||new w(e.message||At)),n&&n.releaseLock(),s())}function $t(e,{ie:t,writer:r,transferStreams:n}){try{const{value:r,readable:s,writable:a}=e,i=[];if(r&&(e.value=r,i.push(e.value.buffer)),n&&Xt?(s&&i.push(s),a&&i.push(a)):e.readable=e.writable=null,i.length)try{return t.postMessage(e,i),!0}catch{Xt=!1,e.readable=e.writable=null,t.postMessage(e)}else t.postMessage(e)}catch(e){throw r&&r.releaseLock(),e}}let er=[];const tr=[];let rr,nr,sr=0;async function ar(e,t){const{options:r,config:n}=t,{transferStreams:a,useWebWorkers:i,useCompressionStream:o,compressed:c,signed:l,encrypted:d}=r,{workerURI:u,maxWorkers:w}=n;t.transferStreams=a||a===$;const f=!(c||l||d||t.transferStreams);return t.useWebWorkers=!f&&(i||i===$&&n.useWebWorkers),t.workerURI=t.useWebWorkers&&u?u:$,r.useCompressionStream=o||o===$&&n.useCompressionStream,(await(async()=>{const r=er.find(e=>!e.se);if(r)return dr(r),new Ot(r,e,t,p);if(er.length<w){const r={he:sr};return sr++,er.push(r),new Ot(r,e,t,p)}return new b(r=>{tr.push({resolve:r,stream:e,me:t}),nr=n.workerStarvationTimeout,ir()})})()).run();function p(e){if(or(),tr.length){const[{resolve:t,stream:r,me:n}]=tr.splice(0,1);t(new Ot(e,r,n,p)),ir()}else e.ie?(dr(e),((e,t)=>{const{config:r}=t,{terminateWorkerTimeout:n}=r;s.isFinite(n)&&n>=0&&(e.de?e.de=!1:e.ye=setTimeout(async()=>{er=er.filter(t=>t!=e);try{await e.terminate()}catch{}},n))})(e,t)):er=er.filter(t=>t!=e)}}function ir(){!rr&&tr.length&&s.isFinite(nr)&&nr>=0&&(rr=setTimeout(cr,nr))}function or(){rr&&(clearTimeout(rr),rr=null)}function cr(){if(rr=null,tr.length){const[{resolve:e,stream:t,me:n}]=tr.splice(0,1),s=r.assign({},n,{useWebWorkers:!1,workerURI:$});e(new Ot({},t,s,lr)),ir()}}function lr(){or(),ir()}function dr(e){const{ye:t}=e;t&&(clearTimeout(t),e.ye=null)}const ur="HTTP error ",wr="HTTP Range not supported",fr="Writer iterator completed too soon",pr="Writer not initialized",hr="Content-Range",mr="Range",yr="GET",br="bytes",gr="writable";class xr{constructor(){this.size=0}init(){this.initialized=!0}}class Sr extends xr{get readable(){return this.be()}be({offset:e=0,size:t,diskNumberStart:r,chunkSize:n=65536}={}){const s=this;let a=0;return new v({async pull(o){const c=t===$?n:i.min(n,t-a),l=await Xr(s,e+a,c,r);o.enqueue(l),a+n>t||t===$&&!l.length&&c?o.close():a+=n}})}}class zr extends xr{constructor(){super();const e=this,t=new E({write(t){if(!e.initialized)throw new w(pr);return e.writeUint8Array(t)}});r.defineProperty(e,gr,{get:()=>t})}writeUint8Array(){}}class Fr extends Sr{constructor(e){super(),r.assign(this,{blob:e,size:e.size})}async readUint8Array(e,t){const r=this,n=e+t,s=e||n<r.size?r.blob.slice(e,n):r.blob;let a=await s.arrayBuffer();return a.byteLength>t&&(a=a.slice(e,n)),new f(a)}}class kr extends xr{constructor(e){super();const t=this,n=new k,s=[];e&&s.push(["Content-Type",e]),r.defineProperty(t,gr,{get:()=>n.writable}),t.blob=new d(n.readable,{headers:s}).blob(),t.blob.catch(()=>{})}getData(){return this.blob}}class vr extends Sr{constructor(e,t){super(),Pr(this,e,t)}async init(){await Cr(this,Nr,Dr),super.init()}readUint8Array(e,t){return Tr(this,e,t,Nr,Dr)}}class Er extends Sr{constructor(e,t){super(),Pr(this,e,t)}async init(){await Cr(this,Ir,Ur),super.init()}readUint8Array(e,t){return Tr(this,e,t,Ir,Ur)}}function Pr(e,t,n){const{preventHeadRequest:s,useRangeHeader:a,forceRangeRequests:i,combineSizeEocd:o,fetch:c}=n;delete(n=r.assign({},n)).preventHeadRequest,delete n.useRangeHeader,delete n.forceRangeRequests,delete n.combineSizeEocd,delete n.useXHR,delete n.fetch,r.assign(e,{url:t,options:n,preventHeadRequest:s,useRangeHeader:a,forceRangeRequests:i,combineSizeEocd:o,fetch:c})}async function Cr(e,t,r){const{url:n,preventHeadRequest:a,useRangeHeader:i,forceRangeRequests:o,combineSizeEocd:c}=e;if((e=>{const{baseURI:t}=ce(),{protocol:r}=new u(e,t);return"http:"==r||"https:"==r})(n)&&(i||o)&&(void 0===a||a)){const n=await t(yr,e,Vr(e,c?-22:void 0)),a=n.headers.get("Accept-Ranges");if(!(o||a&&a.toLowerCase()==br))throw new w(wr);{if(c){const t=new f(await n.arrayBuffer());206==n.status&&t.length==G&&(e.ge=t)}let a;const i=n.headers.get(hr);if(i){const e=i.trim().split(/\s*\/\s*/);if(e.length){const t=e[1];t&&"*"!=t&&(a=s(t))}}a===$?await Wr(e,t,r):e.size=a}}else await Wr(e,t,r)}async function Tr(e,t,r,n,a){const{useRangeHeader:i,forceRangeRequests:o,ge:c,size:l,options:d}=e;if(i||o){if(c&&t==l-G&&r==G)return c;if(l>t&&0!==r){t+r>l&&(r=l-t);const a=await n(yr,e,Vr(e,t,r));if(206!=a.status)throw new w(wr);const i=a.headers.get(hr);if(i){const e=s(i.trim().split(/[\s-]+/)[1]);if(!s.isNaN(e)&&e!=t)throw new w(wr)}const o=new f(await a.arrayBuffer());if(o.length!=r)throw new w(wr);return o}return ne}{const{data:n}=e;return n||await a(e,d),new f(e.data.subarray(t,t+r))}}function Vr(e,t=0,n=1){return r.assign({},qr(e),{[mr]:br+"="+(0>t?t:t+"-"+(t+n-1))})}function qr({options:e}){const{headers:t}=e;if(t)return Symbol.iterator in t?r.fromEntries(t):t}async function Dr(e){await Hr(e,Nr)}async function Ur(e){await Hr(e,Ir)}async function Hr(e,t){const r=await t(yr,e,qr(e));e.data=new f(await r.arrayBuffer()),e.size=e.data.length}async function Wr(e,t,r){if(e.preventHeadRequest)await r(e,e.options);else{const n=await t("HEAD",e,qr(e)),a=n.headers.get("Content-Length");a&&!n.headers.get("Content-Encoding")?e.size=s(a):await r(e,e.options)}}async function Nr(e,{fetch:t=fetch,options:n,url:s},a){const i=await t(s,r.assign({},n,{method:e,headers:a}));if(400>i.status)return i;throw 416==i.status?new w(wr):new w(ur+(i.statusText||i.status))}function Ir(e,{url:t},n){return new b((s,a)=>{const i=new XMLHttpRequest;if(i.addEventListener("load",()=>{if(400>i.status){const e=[];i.getAllResponseHeaders().trim().split(/[\r\n]+/).forEach(t=>{const r=t.trim().split(/\s*:\s*/);r[0]=r[0].trim().replace(/^[a-z]|-[a-z]/g,e=>e.toUpperCase()),e.push(r)}),s({status:i.status,arrayBuffer:()=>i.response,headers:new c(e)})}else a(416==i.status?new w(wr):new w(ur+(i.statusText||i.status)))},!1),i.addEventListener("error",e=>a(e.detail?e.detail.error:new w("Network error")),!1),i.open(e,t),n)for(const e of r.entries(n))i.setRequestHeader(e[0],e[1]);i.responseType="arraybuffer",i.send()})}class Mr extends Sr{constructor(e,t={}){super(),r.assign(this,{url:e,reader:t.useXHR&&!t.fetch?new Er(e,t):new vr(e,t)})}set size(e){}get size(){return this.reader.size}async init(){await this.reader.init(),super.init()}readUint8Array(e,t){return this.reader.readUint8Array(e,t)}}class Ar extends Sr{constructor(e){super(),this.xe=e}async init(){const e=this,{xe:t}=e;e.Se=0,e.ze=0,await b.all(t.map(async(r,n)=>{await Lr(r),n!=t.length-1&&(e.ze+=r.size),e.size+=r.size})),super.init()}async readUint8Array(e,t,r=0){const n=this,{xe:s}=this;let a,o=r;-1==o&&(o=s.length-1);let c=e;for(;s[o]&&c>=s[o].size;)c-=s[o].size,o++;const l=s[o];if(l){const s=l.size;if(c+t>s){const i=s-c;a=new f(t);const o=await Xr(l,c,i);a.set(o,0);const d=await n.readUint8Array(e+i,t-i,r);a.set(d,i),o.length+d.length<t&&(a=a.subarray(0,o.length+d.length))}else a=await Xr(l,c,t)}else a=ne;return n.Se=i.max(o,n.Se),a}}class Kr extends xr{constructor(e,t=4294967295){super();const n=this;let s,a,i;r.assign(n,{diskNumber:0,diskOffset:0,size:0,maxSize:t,availableSize:t});const o=new E({async write(t){const{availableSize:r}=n;if(i)t.length<r?await c(t):(await c(t.subarray(0,r)),await l(),n.diskOffset+=s.size,n.diskNumber++,i=null,n.availableSize=n.maxSize,t.length>r&&await this.write(t.subarray(r)));else{const{value:r,done:o}=await e.next();if(o&&!r)throw new w(fr);s=r,s.size=0,s.maxSize&&(n.maxSize=s.maxSize),n.availableSize=n.maxSize,await Lr(s),a=r.writable,i=a.getWriter(),await this.write(t)}},async close(){i&&(await i.ready,await l())},async abort(e){i&&await i.abort(e)}});async function c(e){const t=e.length;t&&(await i.ready,await i.write(e),s.size+=t,n.availableSize-=t)}async function l(){await i.close()}r.defineProperty(n,gr,{get:()=>o})}}class Rr{constructor(e){return t.isArray(e)&&(e=new Ar(e)),e instanceof v&&(e={readable:e}),e}}class Gr{constructor(e){return e.writable===$&&typeof e.next==re&&(e=new Kr(e)),e instanceof E&&(e={writable:e}),e.size===$&&(e.size=0),e instanceof Kr||r.assign(e,{diskNumber:0,diskOffset:0,availableSize:ee,maxSize:ee}),e}}async function Lr(e,t){if(!e.init||e.initialized)return b.resolve();await e.init(t)}function Xr(e,t,r,n){return e.readUint8Array(t,r,n)}const Or="\0☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ".split("");function Zr(e,t){return t&&"cp437"==t.trim().toLowerCase()?(e=>{{let t="";for(let r=0;r<e.length;r++)t+=Or[e[r]];return t}})(e):new x(t,{ignoreBOM:!0}).decode(e)}const jr="filename",Yr="rawFilename",Jr="comment",Br="rawComment",Qr="uncompressedSize",_r="compressedSize",$r="offset",en="diskNumberStart",tn="lastModDate",rn="rawLastModDate",nn="lastAccessDate",sn="creationDate",an="rawCreationDate",on="internalFileAttributes",cn="externalFileAttributes",ln="msdosAttributesRaw",dn="msdosAttributes",un="msDosCompatible",wn="zip64",fn="encrypted",pn="version",hn="versionMadeBy",mn="zipCrypto",yn="directory",bn="executable",gn="compressionMethod",xn="signature",Sn="extraField",zn="unixMode",Fn="setuid",kn="setgid",vn="sticky",En=[jr,Yr,Qr,_r,tn,rn,Jr,Br,nn,sn,an,$r,en,on,cn,ln,dn,un,wn,fn,pn,hn,mn,yn,bn,gn,xn,Sn,"extraFieldUnix","extraFieldInfoZip","uid","gid",zn,Fn,kn,vn,"bitFlag","filenameUTF8","commentUTF8","rawExtraField","extraFieldZip64","extraFieldUnicodePath","extraFieldUnicodeComment","extraFieldAES","extraFieldNTFS","extraFieldExtendedTimestamp"];class Pn{constructor(e){En.forEach(t=>this[t]=e[t])}}const Cn="password",Tn="rawPassword",Vn="passThrough",qn="signal",Dn="checkAmbiguity",Un="useWebWorkers",Hn="useCompressionStream",Wn="transferStreams",Nn="preventClose",In="offset",Mn="strictness",An="strict",Kn="tolerant",Rn="File format is not recognized",Gn="End of central directory not found",Ln="End of Zip64 central directory locator not found",Xn="Central directory header not found",On="Local file header not found",Zn="Zip64 extra field not found",jn="File contains encrypted entry",Yn="Encryption method not supported",Jn="Compression method not supported",Bn="Split zip file",Qn="Overlapping entry found",_n="Ambiguous archive",$n="utf-8",es="cp437",ts=[[Qr,D],[_r,D],[$r,D],[en,U]],rs={[U]:{Fe:vs,bytes:4},[D]:{Fe:Es,bytes:8}};class ns{constructor(e,t={}){r.assign(this,{reader:new Rr(e),options:t,config:ce(),ke:new c})}async*getEntriesGenerator(e={}){const t=this;let{reader:n}=t;const{config:s}=t;if(await Lr(n),n.size!==$&&n.readUint8Array||(n=new Fr(await new d(n.readable).blob()),await Lr(n)),n.size<G)throw new w(Rn);const a=ds(xs(t,e,Mn),xs(t,e,Dn)),o=a==An,c=a!=Kn,u=((e,t)=>e!==$?e:t==An?0:t==Kn?1/0:U)(xs(t,e,"maxAppendedDataSize"),a),{ve:f,Ee:p}=await(async(e,t,r)=>{const{size:n}=e,s=i.min(n,65557),a={count:us};let o,c,l=0;for await(const[r,i,d,u,w]of hs(e,s)){const s=ks(r,u+20);if(w+G+s==n){const s=await ys(e,r,i,u,w,n,a);if(s==ps){if(o||(o=ms(d,u,w)),l++,!t||l>1)break}else s!=fs||c||(c=ms(d,u,w))}}return o||(o=c),o||(o=await(async(e,t,r)=>{const{size:n}=e,s=i.min(n,t==1/0?n:65557+t);let a,o;for await(const[t,i,c,l,d]of hs(e,s)){const s=ms(c,l,d);a||(a=s);const u=await ys(e,t,i,l,d,n,r);if(u==ps)return s;u!=fs||o||(o=s)}return o||a})(e,r,a)),{ve:o,Ee:l}})(n,c,u);if(!f)throw vs(Ps(await Xr(n,0,4)))==N?new w(Bn):new w(Gn);c&&p>1&&gs("multiple end of central directory records");const h=Ps(f);let m=vs(h,12),y=vs(h,16);const g=f.offset,x=ks(h,20),S=g+G+x;n.size-S>u&&gs("appended data");let z=ks(h,4);const F=n.Se||0;let v,E,P=ks(h,6),C=ks(h,10),T=0;if(y==D||m==D||C==U||P==U){const e=f.offset<L?ne:await Xr(n,f.offset-L,L),t=Ps(e);if(e.length==L&&vs(t,0)==R){y=Es(t,8);let e=await Xr(n,y,56,-1),r=Ps(e);const s=f.offset-L-56-(n.ze||0);if((56>e.length||vs(r,0)!=K)&&y!=s&&s>=0){const t=y;y=s,y>t&&(T=y-t),e=await Xr(n,y,56,-1),r=Ps(e)}if(56>e.length||vs(r,0)!=K)throw new w(Ln);E=!0,z==U?z=vs(r,16):o&&z!=vs(r,16)&&gs("mismatched zip64 end of central directory record"),P==U?P=vs(r,20):o&&P!=vs(r,20)&&gs("mismatched zip64 end of central directory record"),C==U?C=Es(r,32):o&&C!=Es(r,32)&&gs("mismatched zip64 end of central directory record"),m==D?m=Es(r,40):o&&m!=Es(r,40)&&gs("mismatched zip64 end of central directory record"),y=Es(r,48)+T}}const V=m,q=f.offset-(E?76:0);if(y<n.size||(T=n.size-y-m-G,y=n.size-m-G),F!=z)throw new w(Bn);if(0>y)throw new w(Rn);let W=0,I=await Xr(n,y,m,P),A=Ps(I);if(m){if(4>I.length)throw new w(Rn);const e=q-m-(n.ze||0);if(y!=e&&P==z){let t=!(vs(A,W)==M);if(t||0>e||e+4>n.size||(t=vs(Ps(await Xr(n,e,4,P)),0)==M),t){const t=y;y=e,y>t&&(T+=y-t),I=await Xr(n,y,m,P),A=Ps(I)}}}const X=q-y-(n.ze||0);if(m==X||0>X||P!=z||(m=X,I=await Xr(n,y,m,P),A=Ps(I)),0>y||y>=n.size)throw new w(Rn);v=y;const O=xs(t,e,"filenameEncoding"),B=xs(t,e,"commentEncoding"),Q=o?new l:$;let _;for(let a=0;C>a;a++){const c=new ss(n,s,t.options);if(W+46>I.length||vs(A,W)!=M)throw new w(Xn);as(c,A,W+6);const l=!!c.bitFlag.languageEncodingFlag,u=W+46,f=u+c.filenameLength,p=f+c.extraFieldLength,h=ks(A,W+4),m=!(h>>8),y=h>>8==3,g=I.subarray(u,f),x=ks(A,W+32),S=p+x,z=I.subarray(p,S),F=l,E=l,P=vs(A,W+38),V=P&H,q={readOnly:!!(1&V),hidden:!!(2&V),system:!!(4&V),directory:!!(16&V),archive:!!(32&V)},D=vs(A,W+42),N=xs(t,e,"decodeText")||Zr,K=F?$n:O||es,R=E?$n:B||es;let G=N(g,K);G===$&&(G=Zr(g,K));let L=N(z,R);L===$&&(L=Zr(z,R)),r.assign(c,{index:a,versionMadeBy:h,msDosCompatible:m,compressedSize:0,uncompressedSize:0,Pe:x,offset:D,diskNumberStart:ks(A,W+34),internalFileAttributes:ks(A,W+36),externalFileAttributes:P,msdosAttributesRaw:V,msdosAttributes:q,rawFilename:g,filenameUTF8:F,commentUTF8:E,rawExtraField:I.subarray(f,p),rawComment:z,filename:G,comment:L}),is(c,c,A,W+6),c.offset+=T,v=i.min(c.offset,v),o&&(Q.has(c.filename)&&(_=!0),Q.add(c.filename));const X=c.externalFileAttributes>>16&U;c.unixMode===$&&16877&X&&(c.unixMode=X);const ee=!!(c.unixMode&j),te=!!(c.unixMode&Y),re=!!(512&c.unixMode),ne=c.unixMode!==$?!!(73&c.unixMode):y&&!!(73&X),se=c.unixMode!==$&&(61440&c.unixMode)==Z,ae=(61440&X)==Z;r.assign(c,{setuid:ee,setgid:te,sticky:re,unixExternalUpper:X,internalFileAttribute:c.internalFileAttributes,externalFileAttribute:c.externalFileAttributes,executable:ne,directory:se||ae||m&&q.directory||c.filename.endsWith(J)&&!c.uncompressedSize,zipCrypto:c.encrypted&&!c.extraFieldAES});const ie=new Pn(c);ie.getData=(e,r)=>c.getData(e,ie,t.ke,r),ie.arrayBuffer=async e=>{const r=new k,[n]=await b.all([new d(r.readable).arrayBuffer(),c.getData(r,ie,t.ke,e)]);return n},W=S;const{onprogress:oe}=e;if(oe)try{await oe(a+1,C,new Pn(c))}catch{}yield ie}o&&W!=V&&gs("trailing central directory data"),_&&gs("duplicate filename"),o&&(T||C&&v>0)&&gs("prepended data");const ee=xs(t,e,"extractPrependedData"),te=xs(t,e,"extractAppendedData");return ee&&(t.prependedData=v>0?await Xr(n,0,v):ne),t.comment=x?await Xr(n,g+G,x):ne,te&&(t.appendedData=S<n.size?await Xr(n,S,n.size-S):ne),!0}async getEntries(e={}){const t=[];for await(const r of this.getEntriesGenerator(e))t.push(r);return t}async close(){}}class ss{constructor(e,t,n){r.assign(this,{reader:e,config:t,options:n})}async getData(e,t,r,n={}){const s=this,{reader:a,index:o,offset:c,diskNumberStart:l,extraFieldAES:d,extraFieldZip64:u,compressionMethod:f,config:p,bitFlag:h,signature:m,rawLastModDate:y,uncompressedSize:b,compressedSize:g}=s,{dataDescriptor:x}=h,S=t.localDirectory={},z=await Xr(a,c,B,l),F=Ps(z);let k=xs(s,n,Cn),v=xs(s,n,Tn);const P=xs(s,n,Vn);if(k=k&&k.length&&k,v=v&&v.length&&v,d&&99!=d.originalCompressionMethod)throw new w(Jn);if(0!=f&&8!=f&&9!=f&&!P)throw new w(Jn);if(z.length<B||vs(F,0)!=W)throw new w(On);as(S,F,4);const{extraFieldLength:C,filenameLength:T}=S,V=ds(xs(s,n,Mn),xs(s,n,Dn))==An;let q=ne;if(V&&(T||C)){const e=await Xr(a,c+B,T+C,l);q=e.subarray(0,T),S.rawExtraField=e.subarray(T)}else S.rawExtraField=C?await Xr(a,c+B+T,C,l):ne;is(s,S,F,4,!0),V&&((e,t,r)=>{const{rawFilename:n}=e;(r.length!=n.length||r.some((e,t)=>e!=n[t]))&&gs("mismatched local file header (filename)"),(2057&t.rawBitFlag)!=(2057&e.rawBitFlag)&&gs("mismatched local file header (general purpose bit flag)"),t.compressionMethod!=e.compressionMethod&&gs("mismatched local file header (compression method)"),t.bitFlag.dataDescriptor||!(t.signature||t.compressedSize||t.uncompressedSize)||t.signature==e.signature&&t.compressedSize==e.compressedSize&&t.uncompressedSize==e.uncompressedSize||gs("mismatched local file header (signature or sizes)")})(s,S,q);const{lastAccessDate:D,creationDate:U}=S;D&&(t.lastAccessDate=D),U&&(t.creationDate=U);const N=s.encrypted&&S.encrypted&&!P,M=N&&!d;if(P||(t.zipCrypto=M),N){if(!M&&d.strength===$)throw new w(Yn);if(!k&&!v)throw new w(jn)}const A=c+B+T+C,K=g,R=a.be({offset:A,size:K,diskNumberStart:l,chunkSize:le(p)}),G=xs(s,n,qn),L=xs(s,n,"checkPasswordOnly");let X=xs(s,n,"checkOverlappingEntry");const O=xs(s,n,"checkOverlappingEntryOnly");O&&(X=!0);const{onstart:Z,onprogress:j,onend:Y}=n,J=9==f;let Q=xs(s,n,Hn);J&&(Q=!1);const _={options:{codecType:Wt,password:k,rawPassword:v,zipCrypto:M,encryptionStrength:d&&d.strength,signed:xs(s,n,"checkSignature")&&!P,passwordVerification:M&&(x?y>>>8&H:m>>>24&H),outputSize:P?g:b,signature:m,compressed:0!=f&&!P,encrypted:N,useWebWorkers:xs(s,n,Un),useCompressionStream:Q,transferStreams:xs(s,n,Wn),deflate64:J,checkPasswordOnly:L},config:p,ne:{signal:G,size:K,onstart:Z,onprogress:j,onend:Y}};let ee;X&&await(async({reader:e,Ce:t,index:r,offset:n,diskNumberStart:s,signature:a,compressedSize:o,uncompressedSize:c,Te:l,dataDescriptor:d,extraFieldZip64:u,ke:f})=>{let p=0;if(s&&e.xe)for(let t=0;t<i.min(s,e.xe.length);t++)p+=e.xe[t].size;let h=0;if(d&&(h=u?20:12),h){const r=await Xr(e,l+o,h+4,s);if(r.length==h+4&&vs(Ps(r),0)==I){const e=vs(Ps(r),4);let n,s;u?(n=Es(Ps(r),8),s=Es(Ps(r),16)):(n=vs(Ps(r),8),s=vs(Ps(r),12)),(t.encrypted&&!t.zipCrypto||e==a)&&n==o&&s==c&&(h+=4)}}const m={start:p+n,end:p+l+o+h,Ce:t};for(const[e,t]of f)if(e!=r&&m.start<t.end&&t.start<m.end){const e=new w(Qn);throw e.Ve=t.Ce,e}f.set(r,m)})({reader:a,Ce:t,index:o,offset:c,diskNumberStart:l,signature:m,compressedSize:g,uncompressedSize:b,Te:A,dataDescriptor:x||S.bitFlag.dataDescriptor,extraFieldZip64:u||S.extraFieldZip64,ke:r});try{if(!O){L&&(e=new E),e=new Gr(e),await Lr(e,P?g:b),({writable:ee}=e);const{outputSize:t}=await ar({readable:R,writable:ee},_);if(e.size+=t,t!=(P?g:b))throw new w(kt)}}catch(t){if(t.outputSize!==$&&(e.size+=t.outputSize),!L||t.message!=Ae)throw t}finally{xs(s,n,Nn)||!ee||ee.locked||await ee.getWriter().close()}return L||O?$:e.getData?e.getData():ee}}function as(e,t,n){const s=e.rawBitFlag=ks(t,n+2),a=!(1&~s),i=vs(t,n+6);r.assign(e,{encrypted:a,version:ks(t,n),bitFlag:{level:(6&s)>>1,dataDescriptor:!(8&~s),languageEncodingFlag:(s&O)==O},rawLastModDate:i,lastModDate:Ss(i),filenameLength:ks(t,n+22),extraFieldLength:ks(t,n+24)})}function is(e,t,n,s,a){const{rawExtraField:i}=t,l=t.extraField=new c,d=Ps(new f(i));let u=0;try{for(;u<i.length;){const e=ks(d,u),t=ks(d,u+2);l.set(e,{type:e,data:i.slice(u+4,u+4+t)}),u+=4+t}}catch{}const p=ks(n,s+4);r.assign(t,{signature:vs(n,s+10),compressedSize:vs(n,s+14),uncompressedSize:vs(n,s+18)});const h=l.get(1);h&&(((e,t)=>{t.zip64=!0;const r=Ps(e.data),n=ts.filter(([e,r])=>t[e]==r),s=n.reduce((e,[,t])=>e+rs[t].bytes,0);if(e.data.length<s)throw new w(Zn);for(let s=0,a=0;s<n.length;s++){const[i,o]=n[s],c=rs[o];t[i]=e[i]=c.Fe(r,a),a+=c.bytes}})(h,t),t.extraFieldZip64=h);const m=l.get(28789);m&&(os(m,jr,Yr,t,e),t.extraFieldUnicodePath=m);const y=l.get(25461);y&&(os(y,Jr,Br,t,e),t.extraFieldUnicodeComment=y);const b=l.get(39169);b&&b.data.length>=7?(((e,t,n)=>{const s=Ps(e.data),a=Fs(s,4);r.assign(e,{qe:Fs(s,0),vendorId:Fs(s,2),strength:a,originalCompressionMethod:n,compressionMethod:ks(s,5)}),t.compressionMethod=e.compressionMethod})(b,t,p),t.extraFieldAES=b):t.compressionMethod=p;const g=l.get(10);g&&(((e,t)=>{const n=Ps(e.data);let s,a=4;try{for(;a<e.data.length&&!s;){const t=ks(n,a),r=ks(n,a+2);1==t&&(s=e.data.slice(a+4,a+4+r)),a+=4+r}}catch{}try{if(s&&24==s.length){const n=Ps(s),a=n.getBigUint64(0,!0),i=n.getBigUint64(8,!0),o=n.getBigUint64(16,!0);r.assign(e,{rawLastModDate:a,rawLastAccessDate:i,rawCreationDate:o});const c={lastModDate:zs(a),lastAccessDate:zs(i),creationDate:zs(o)};r.assign(e,c),r.assign(t,c)}}catch{}})(g,t),t.extraFieldNTFS=g);const x=l.get(30805);if(x)cs(x,t,!1),t.extraFieldUnix=x;else{const e=l.get(30837);e&&(cs(e,t,!0),t.extraFieldInfoZip=e)}const S=l.get(X);S&&(((e,t,r)=>{if(!e.data.length)return;const n=Ps(e.data),s=Fs(n,0),a=[],i=[];r?(1&~s||(a.push(tn),i.push(rn)),2&~s||(a.push(nn),i.push("rawLastAccessDate")),4&~s||(a.push(sn),i.push(an))):5>e.data.length||(a.push(tn),i.push(rn));let c=1;a.forEach((r,s)=>{if(e.data.length>=c+4){const a=vs(n,c);t[r]=e[r]=new o(1e3*(0|a));const l=i[s];e[l]=a}c+=4})})(S,t,a),t.extraFieldExtendedTimestamp=S);const z=l.get(6534);z&&(t.extraFieldUSDZ=z)}function os(e,t,n,s,a){if(5>e.data.length)return void(e.valid=!1);const i=Ps(e.data),o=new Te;o.append(a[n]);const c=Ps(new f(4));c.setUint32(0,o.get(),!0);const l=vs(i,1);r.assign(e,{version:Fs(i,0),[t]:Zr(e.data.subarray(5)),valid:!a.bitFlag.languageEncodingFlag&&l==vs(c,0)}),e.valid&&(s[t]=e[t],s[t+"UTF8"]=!0)}function cs(e,t,n){try{const s=Ps(new f(e.data));let a,i;if(n){let t=0;const n=Fs(s,t++),o=Fs(s,t++);a=ls(e.data.subarray(t,t+o)),t+=o;const c=Fs(s,t++);i=ls(e.data.subarray(t,t+c)),r.assign(e,{version:n,uid:a,gid:i})}else 4>e.data.length||(a=ks(s,0),i=ks(s,2),r.assign(e,{uid:a,gid:i}));a!==$&&(t.uid=a),i!==$&&(t.gid=i)}catch{}}function ls(e){const t=new f(4);return t.set(e,0),new m(t.buffer,t.byteOffset,4).getUint32(0,!0)}function ds(e,t){return e===$?t?An:"balanced":e}const us=64,ws=0,fs=1,ps=2;async function*hs(e,t){const r=e.size-t,n=await Xr(e,r,t),s=Ps(n);for(let e=n.length-G;e>=0;e--)vs(s,e)==A&&(yield[s,r,n,e,r+e])}function ms(e,t,r){return{offset:r,buffer:e.slice(t,t+G).buffer}}async function ys(e,t,r,n,s,a,i){const o=ks(t,n+10),c=vs(t,n+12),l=vs(t,n+16);if(o==U||c==D||l==D)return await bs(e,t,r,s-L,a,i)==R?ps:ws;if(!o&&!c)return fs;for(const n of[s-c,l])if(await bs(e,t,r,n,a,i)==M)return ps;return ws}async function bs(e,t,r,n,s,a){return 0>n||n+4>s?$:r>n?a.count>0?(a.count--,vs(Ps(await Xr(e,n,4)),0)):$:vs(t,n-r)}function gs(e){const t=new w(_n);throw t.reason=e,t}function xs(e,t,r){return t[r]===$?e.options[r]:t[r]}function Ss(e){const t=(4294901760&e)>>16,r=e&U;try{return new o(1980+((65024&t)>>9),((480&t)>>5)-1,31&t,(63488&r)>>11,(2016&r)>>5,2*(31&r),0)}catch{}}function zs(e){return new o(s(e/a(1e4)-a(116444736e5)))}function Fs(e,t){return e.getUint8(t)}function ks(e,t){return e.getUint16(t,!0)}function vs(e,t){return e.getUint32(t,!0)}function Es(e,t){return s(e.getBigUint64(t,!0))}function Ps(e){return new m(e.buffer,e.byteOffset,e.byteLength)}const Cs="File already exists",Ts="Zip file comment exceeds 64KB",Vs="File entry comment exceeds 64KB",qs="File entry name exceeds 64KB",Ds="Version exceeds 65535",Us="The strength must equal 1, 2, or 3",Hs="Extra field type exceeds 65535",Ws="Extra field data exceeds 64KB",Ns=-2147483648,Is=2147483647,Ms="Zip64 is not supported (set the 'zip64' option to 'true')",As="Undefined uncompressed size",Ks="Undefined reader",Rs="Zip file not empty",Gs=new f([7,0,2,0,65,69,3,0,0]),Ls="infozip",Xs="unix";let Os=0;const Zs=[];class js{constructor(e,t={}){const n=(e=new Gr(e)).availableSize!==$&&e.availableSize>0&&e.availableSize!==ee&&e.maxSize!==$&&e.maxSize>0&&e.maxSize!==ee;r.assign(this,{writer:e,De:n,options:t,config:ce(),files:new c,Ue:new l,offset:t[In]===$?e.size||e.writable.size||0:t[In],He:t[In]===$?0:t[In]-(e.size||e.writable.size||0),We:new l,Ne:0,Ie:$})}async prependZip(e){if(this.Ue.size)throw new w(Rs);e=new Rr(e),await Lr(e);const t=new ns(e.readable),n=await t.getEntries();await t.close(),await Lr(this.writer),await e.readable.pipeTo(this.writer.writable,{preventClose:!0,preventAbort:!0}),this.writer.size=this.offset=e.size,this.Ue=new l(n.map(e=>e.filename)),this.files=new c(n.map(e=>{const{version:t,rawLastModDate:n,lastAccessDate:s,creationDate:a,rawFilename:i,bitFlag:o,encrypted:c,uncompressedSize:l,compressedSize:d,diskOffset:u,diskNumber:w,zip64:f}=e;let{compressionMethod:p,Me:h,Ae:m,Ke:y,Re:b,Ge:g,rawExtraField:x}=e;const{level:S,languageEncodingFlag:z,dataDescriptor:F}=o;h=h||ne,m=m||ne,y=y||ne,b=b||ne,g=g||ne,x=x||ne,e.extraFieldAES&&(p=99);const k=ua(h,m,y,b,g,x),v=f&&l>=D,E=f&&d>=D,P=-7&fa(S,z,F,c,p)|S<<1,{Le:C,Xe:T}=wa({version:t,bitFlag:P,compressionMethod:p,uncompressedSize:l,compressedSize:d,rawLastModDate:n,rawFilename:i,Oe:E,Ze:v,extraFieldLength:k}),{signature:V}=e;return V!==$&&oa(T,10,V),r.assign(e,{Ze:v,Oe:E,je:f&&this.offset-u>=D,Ye:f&&w>=U,Me:h,Ae:m,Ke:y,Re:b,Ge:g,rawExtraField:x,extendedTimestamp:y.length>0||b.length>0,Je:1+(s?2:0)+(a?4:0),Le:C,Xe:T}),[e.filename,e]}))}async add(e="",t,n={}){const s=this;n=r.assign({},n);const{We:i,config:c}=s;let l,d;Os<c.maxWorkers?Os++:await new b(e=>Zs.push(e));try{if(e=e.trim(),sa(s,n,yn)&&!e.endsWith(J)&&(e+=J),s.Ue.has(e))throw new w(Cs);return s.Ue.add(e),d=!0,l=(async(e,t,n,s)=>{const i=((e,t,r)=>{t=t.trim();let n=sa(e,r,un),s=sa(e,r,hn,n?20:768);const a=sa(e,r,bn),i=sa(e,r,"uid"),o=sa(e,r,"gid");let c=sa(e,r,zn),l=sa(e,r,"unixExtraFieldType"),d=sa(e,r,Fn),u=sa(e,r,kn),f=sa(e,r,vn);if(i!==$&&(0>i||i>D))throw new w("Invalid uid (must be integer 0..2^32-1)");if(o!==$&&(0>o||o>D))throw new w("Invalid gid (must be integer 0..2^32-1)");if(c!==$&&(0>c||c>U))throw new w("Invalid UNIX mode (must be integer 0..65535)");if(l!==$&&l!==Ls&&l!==Xs)throw new w("Invalid unixExtraFieldType (must be 'infozip' or 'unix')");if(l===Xs&&(i!==$&&i>U||o!==$&&o>U))throw new w("uid/gid must be 0..65535 for unixExtraFieldType 'unix' (use 'infozip' for larger ids)");l!==$||i===$&&o===$||(l=Ls);let p=sa(e,r,ln),h=sa(e,r,dn);const m=p!==$||h!==$;if(i!==$||o!==$||c!==$||l?(n=!1,s=s&U|768):m&&(n=!0,s&=H),p!==$&&(0>p||p>H))throw new w("Invalid msdosAttributesRaw (must be integer 0..255)");if(h&&"object"!=typeof h)throw new w("Invalid msdosAttributes (must be an object with boolean flags)");if(s>U)throw new w(Ds);let y=sa(e,r,cn,0);!r[yn]&&t.endsWith(J)&&(r[yn]=!0);const b=sa(e,r,yn);let g;return b?(t.endsWith(J)||(t+=J),0===y&&(y=16,n||(y|=16877<<16))):n||0!==y||(y=a?493<<16:27525120),n||(g=y>>16&U,c=c===$?g:c&U,d?c|=j:d=!!(c&j),u?c|=Y:u=!!(c&Y),f?c|=512:f=!!(512&c),b&&(c|=Z),y=(c&U)<<16|y&H),({msdosAttributesRaw:p,msdosAttributes:h}=((e,t)=>{if(e!==$)e&=H;else if(t!==$){const{readOnly:r,hidden:n,system:s,directory:a,archive:i}=t;let o=0;r&&(o|=1),n&&(o|=2),s&&(o|=4),a&&(o|=16),i&&(o|=32),e=o&H}return t===$&&(t={readOnly:!!(1&e),hidden:!!(2&e),system:!!(4&e),directory:!!(16&e),archive:!!(32&e)}),{msdosAttributesRaw:e,msdosAttributes:t}})(p,h)),m&&(y=y&D|p&H),{name:t,Be:{versionMadeBy:s,msDosCompatible:n,externalFileAttributes:y,unixExternalUpper:g,uid:i,gid:o,unixMode:c,unixExtraFieldType:l,setuid:d,setgid:u,sticky:f,msdosAttributesRaw:p,msdosAttributes:h}}})(e,t,s);({name:t}=i);const c=((e,t,r)=>{const n=sa(e,r,"encodeText",qe);let s=n(t);if(s===$&&(s=qe(t)),ua(s)>U)throw new w(qs);const a=r[Jr]||"";let i=n(a);if(i===$&&(i=qe(a)),ua(i)>U)throw new w(Vs);const c=sa(e,r,pn,20);if(c>U)throw new w(Ds);const l=sa(e,r,tn,new o),d=sa(e,r,nn),u=sa(e,r,sn),p=sa(e,r,on,0),h=sa(e,r,Vn);let m,y;h||(m=sa(e,r,Cn),y=sa(e,r,Tn));const b=sa(e,r,"encryptionStrength",3),g=sa(e,r,mn),x=sa(e,r,"extendedTimestamp",!0),S=sa(e,r,"keepOrder",!0),z=sa(e,r,Un),F=sa(e,r,Wn,!0),k=sa(e,r,"bufferedWrite"),v=sa(e,r,"createTempStream"),E=sa(e,r,"dataDescriptorSignature",!0),P=sa(e,r,qn),C=sa(e,r,"useUnicodeFileNames",!0),T=sa(e,r,gn);if(!h&&T!==$&&0!==T&&8!==T)throw new w("Compression method not supported");let V=sa(e,r,"level"),q=sa(e,r,Hn),D=sa(e,r,"dataDescriptor");k&&D===$&&(D=!1),(D===$||g)&&(D=!0),V!==$&&6!=V&&(q=!1),q||e.config.CompressionStream!==$||e.config.CompressionStreamZlib!==$||(V=0);const H=sa(e,r,wn);if(!g&&(m!==$||y!==$)&&(1>b||b>3))throw new w(Us);let W=ne;const N=r[Sn];if(N){let e=0,t=0;N.forEach(t=>e+=4+ua(t)),W=new f(e);const r=da(W);N.forEach((e,n)=>{if(n>U)throw new w(Hs);if(ua(e)>U)throw new w(Ws);ia(r,t,n),ia(r,t+2,ua(e)),la(W,e,t+4),t+=4+ua(e)})}return{comment:a,Be:{rawFilename:s,rawComment:i,version:c,lastModDate:l,lastAccessDate:d,creationDate:u,internalFileAttributes:p,passThrough:h,password:m,rawPassword:y,encryptionStrength:b,zipCrypto:g,extendedTimestamp:x,keepOrder:S,useWebWorkers:z,transferStreams:F,bufferedWrite:k,createTempStream:v,dataDescriptorSignature:E,signal:P,useUnicodeFileNames:C,compressionMethod:T,level:V,useCompressionStream:q,dataDescriptor:D,zip64:H,rawExtraField:W}}})(e,t,s),{comment:l}=c,d=s[Sn];let u;e.files.set(t,$);try{const o=await(async(e,t,{Be:r},n)=>{const{passThrough:s,zipCrypto:a,password:i,rawPassword:o,encryptionStrength:c}=r;let{dataDescriptor:l,zip64:d,level:u,compressionMethod:f}=r,p=0,h=0;if(s){if(!t)throw new w(Ks);if(h=n[Qr],h===$)throw new w(As)}const m=!0===d,y=sa(e,n,fn),b=!!t&&(!!(i&&ua(i)||o&&ua(o))||s&&y);t||(u=0,f=0);const g=b?a?12:16+4*c:0;t&&(t=new Rr(t),await Lr(t),s?(n.uncompressedSize=h,p=aa(h)+g):t.size===$?(l=!0,(d||d===$)&&(d=!0,h=p=4294967296)):(n.uncompressedSize=h=t.size,p=aa(h)+g));const x=m||h>=D,S=m||p>=D;if(x||S){if(!1===d)throw new w(Ms);d=!0}return d=d||!1,{reader:t,Be:{dataDescriptor:l,zip64:d,Ze:x,Oe:S,uncompressedSize:h,level:u,compressionMethod:f,encrypted:b}}})(e,n,c,s);({reader:n}=o);const{diskOffset:l,diskNumber:d}=e.writer,p=(e=>{const{rawFilename:t,lastModDate:r,lastAccessDate:n,creationDate:s,level:a,zip64:i,zipCrypto:o,useUnicodeFileNames:c,dataDescriptor:l,directory:d,rawExtraField:u,encryptionStrength:f,extendedTimestamp:p,passThrough:h,encrypted:m,Ze:y,Oe:b,uncompressedSize:g}=e;let{version:x,compressionMethod:S}=e;const z=!d&&(S===$?a===$||a>0:0!==S);let F;const k=h||!z,v=i&&(e.bufferedWrite||!l||!y&&!b||k),E=v||i&&l&&(y||b);if(i&&(y||b)){const e=20,t=Qs(e);if(t.uint16(1),t.uint16(e-4),F=t.array,v&&(t.Qe(g),k)){const e=m?o?12:16+4*f:0;t.Qe(h?0:g+e)}}else F=ne;let P,C,T,V,q;if(m&&!o){const e=Qs(ua(Gs)+2);e.uint16(39169),e.bytes(Gs),P=e.array,P[8]=f}else P=ne;if(p){const e=ta(r);if(ra(e)){const t=9+(n?4:0)+(s?4:0),r=Qs(t);V=1+(n?2:0)+(s?4:0),r.uint16(X),r.uint16(t-4),r.uint8(V),r.uint32(e),n&&r.uint32(na(ta(n))),s&&r.uint32(na(ta(s))),T=r.array}else T=ne;try{const e=ea(r),t=Qs(36);t.uint16(10),t.uint16(32),t._e(4),t.uint16(1),t.uint16(24),t.Qe(e),t.Qe(ea(n)||e),t.Qe(ea(s)||e),C=t.array}catch{C=ne}}else C=T=ne;try{const{uid:t,gid:r,unixExtraFieldType:n}=e;if(n!=Ls||t===$&&r===$)if(n!=Xs||t===$&&r===$)q=ne;else{const e=Qs(8);e.uint16(30805),e.uint16(4),e.uint16((t===$?0:t)&U),e.uint16((r===$?0:r)&U),q=e.array}else{const e=Bs(t),n=Bs(r),s=3+e.length+n.length,a=Qs(4+s);a.uint16(30837),a.uint16(s),a.uint8(1),a.uint8(e.length),a.bytes(e),a.uint8(n.length),a.bytes(n),q=a.array}}catch{q=ne}S===$&&(S=z?8:0),i&&(x=x>45?x:45),m&&!o&&(x=x>51?x:51,P[9]=S,S=99);const D=E?ua(F):0,H=D+ua(P,T,C,q,u);if(H>U)throw new w(Ws);const{Le:N,Xe:I,rawLastModDate:M}=wa({version:x,bitFlag:fa(a,c,l,m,S),compressionMethod:S,uncompressedSize:g,lastModDate:_>r?_:r>Q?Q:r,rawFilename:t,Oe:b,Ze:y,extraFieldLength:H}),A=Qs(B+ua(t)+H),K=A.array,R=da(K);return A.uint32(W),A.bytes(N),A.bytes(t),E&&A.bytes(F),A.bytes(P),A.bytes(T),A.bytes(C),A.bytes(q),A.bytes(u),l&&(b||oa(R,18,0),y||oa(R,22,0)),{$e:K,et:R,Le:N,Xe:I,lastModDate:r,rawLastModDate:M,encrypted:m,compressed:z,version:x,compressionMethod:S,Je:V,Me:ne,tt:D,Ke:T,Re:C,Ge:q,Ae:P,extraFieldLength:H}})(s=r.assign({},s,i.Be,c.Be,o.Be,{internalFileAttribute:c.Be.internalFileAttributes,externalFileAttribute:i.Be.externalFileAttributes,signature:s[xn],offset:e.offset-l,diskNumberStart:d})),h=(({zip64:e,dataDescriptor:t,dataDescriptorSignature:r})=>{let n,s=ne,a=0,i=e?20:12;return r&&(i+=4),t&&(s=new f(i),n=da(s),r&&(a=4,oa(n,0,I))),{rt:s,nt:n,st:a}})(s),m=ua(p.$e,h.rt);u=await(async(e,t,n,s,i)=>{const{files:o,writer:c}=e,{keepOrder:l,dataDescriptor:d,signal:u}=i,{it:p}=s,h=e.options.usdz,m=e.Ie;let y,g,x,S,z,F,v,P={},C=0;o.set(t,P),e.Ie=P;try{let g;l&&(g=m&&m.lock,P.lock=new b(e=>x=e)),i.bufferedWrite||!l||e.ot||e.Ne||!d?(y=!0,e.Ne++,v=i.createTempStream?await i.createTempStream():new k($,$,{highWaterMark:ee}),v.size=0,await Lr(c)):(v=c,await T()),await Lr(v);const{diskOffset:q}=c;if(e.De){delete e.De;const t=new f(4);oa(da(t),0,N),await $s(c,t),e.offset+=4}h&&!y&&Js(s,e.offset-q);const{$e:U}=p;y||(await g,await V());const W=c.diskNumber,I=_s(e,c);if(P.diskNumberStart=W,y||(z=!0,F=c.size,await $s(v,U)),P=await(async(e,t,{diskNumberStart:n,lock:s},i,o,c)=>{const{it:l,ct:d,lt:u}=i,{Le:f,Xe:p,lastModDate:h,rawLastModDate:m,encrypted:y,compressed:b,version:g,compressionMethod:x,Me:S,tt:z,Ke:F,Je:k,Re:v,Ge:E,Ae:P}=l,{rt:C}=d,{rawFilename:T,lastAccessDate:V,creationDate:q,password:U,rawPassword:W,level:N,zip64:I,Ze:M,Oe:A,zipCrypto:K,dataDescriptor:R,directory:G,executable:L,versionMadeBy:X,rawComment:O,rawExtraField:Z,useWebWorkers:j,transferStreams:Y,onstart:J,onprogress:B,onend:Q,signal:_,encryptionStrength:ee,extendedTimestamp:te,msDosCompatible:re,internalFileAttributes:ne,externalFileAttributes:se,uid:ae,gid:ie,unixMode:oe,setuid:ce,setgid:de,sticky:ue,unixExternalUpper:we,msdosAttributesRaw:fe,msdosAttributes:pe,useCompressionStream:he,passThrough:me}=c,ye={lock:s,versionMadeBy:X,zip64:I,directory:!!G,executable:!!L,filenameUTF8:!0,rawFilename:T,commentUTF8:!0,rawComment:O,Me:S,tt:z,Ke:F,Re:v,Ge:E,Ae:P,rawExtraField:Z,extendedTimestamp:te,msDosCompatible:re,internalFileAttributes:ne,externalFileAttributes:se,diskNumberStart:n,uid:ae,gid:ie,unixMode:oe,setuid:ce,setgid:de,sticky:ue,unixExternalUpper:we,msdosAttributesRaw:fe,msdosAttributes:pe};let{signature:be,uncompressedSize:ge}=c,xe=0;me||(ge=0);const{writable:Se}=t;if(e){const r=e.be?e.be({chunkSize:le(o)}):e.readable,n=e.size,s={options:{codecType:Ht,level:N,rawPassword:W,password:U,encryptionStrength:ee,zipCrypto:y&&K,passwordVerification:y&&K&&m>>8&H,signed:!me,compressed:b&&!me,encrypted:y&&!me,useWebWorkers:j,useCompressionStream:he,transferStreams:Y},config:o,ne:{signal:_,size:n,onstart:J,onprogress:B,onend:Q}};try{const e=await ar({readable:r,writable:Se},s);if(xe=e.outputSize,t.size+=xe,me||(ge=e.inputSize,be=e.signature),!A&&xe>=D||!M&&ge>=D)throw new w(Ms)}catch(e){throw e.outputSize!==$&&(t.size+=e.outputSize),e}}return(({signature:e,compressedSize:t,uncompressedSize:r,it:n,ct:s},{zip64:i,zipCrypto:o,dataDescriptor:c})=>{const{Xe:l,encrypted:d}=n,{nt:u,st:w}=s;d&&!o||e===$||(oa(l,10,e),c&&oa(u,w,e)),i?c&&(ca(u,w+4,a(t)),ca(u,w+12,a(r))):(oa(l,14,t),oa(l,18,r),c&&(oa(u,w+4,t),oa(u,w+8,r)))})({signature:be,compressedSize:xe,uncompressedSize:ge,it:l,ct:d},c),R&&await $s(t,C),r.assign(ye,{uncompressedSize:ge,compressedSize:xe,lastModDate:h,rawLastModDate:m,creationDate:q,lastAccessDate:V,encrypted:y,zipCrypto:K,size:u+xe,compressionMethod:x,version:g,Le:f,Xe:p,signature:be,Je:k,Ze:M,Oe:A}),ye})(n,v,P,s,e.config,i),y||(z=!1),o.set(t,P),P.filename=t,y){if(await b.all([v.writable.getWriter().close(),g]),await T(),S=!0,F=c.size,await V(),P.diskNumberStart=c.diskNumber,P.offset=_s(e,c),h){const t=s.lt;Js(s,e.offset-c.diskOffset),P.size+=s.lt-t}(({rawFilename:e,encrypted:t,zip64:r,tt:n,signature:s,compressedSize:i,uncompressedSize:o,Ze:c,Oe:l},d,{dataDescriptor:u})=>{if(u||(t||oa(d,14,s),l||oa(d,18,i),c||oa(d,22,o)),r&&n){const t=B+ua(e)+4;ca(d,t,a(o)),ca(d,t+8,a(i))}})(P,p.et,i),await $s(c,p.$e),await(async(e,t,r)=>{const n=t.writable.getWriter();try{await e.pipeTo(new E({async write(e){var t;await n.ready,await n.write(e),t=ua(e),C+=t}}),{preventClose:!0,preventAbort:!0,signal:r})}finally{n.releaseLock()}})(v.readable,c,u),c.size+=v.size,S=!1}else P.diskNumberStart=W,P.offset=I;return e.offset+=P.size,P}catch(r){if(S||z){if(e.hasCorruptedEntries=!0,r)try{r.corruptedEntry=!0}catch{}e.offset+=c.size-F,y&&(e.offset+=C)}throw o.delete(t),r}finally{if(y&&e.Ne--,x&&x(),g&&g(),y&&v&&v.dispose)try{await v.dispose()}catch{}}async function T(){e.ot=!0;const{dt:t}=e;e.dt=new b(t=>g=()=>{e.ot=!1,t()}),await t}async function V(){ua(p.$e)>c.availableSize&&(c.availableSize=0,await $s(c,ne))}})(e,t,n,{it:p,ct:h,lt:m},s)}catch(r){throw e.files.delete(t),r}return r.assign(u,{name:t,comment:l,extraField:d}),new Pn(u)})(s,e,t,n),i.add(l),await l}catch(t){throw d&&s.Ue.delete(e),t}finally{i.delete(l);const e=Zs.shift();e?e():Os--}}remove(e){const{Ue:t,files:r}=this;if("string"==typeof e&&(e=r.get(e)),e&&e.filename!==$){const{filename:n}=e;if(t.has(n)&&r.has(n))return t.delete(n),r.delete(n),!0}return!1}async close(e=ne,r={}){const{We:n,writer:s}=this,{writable:i}=s;if(ua(e)>U)throw new w(Ts);for(;n.size;)await b.allSettled(t.from(n));return await(async(e,r,n)=>{const s=(e=>{let t=0;for(const[,r]of e){const{rawFilename:e,Ae:n,rawComment:s,Re:a,Ge:i,rawExtraField:o,extendedTimestamp:c,Je:l,lastModDate:d,Ze:u,Oe:f,uncompressedSize:p,compressedSize:h}=r,m=r.offset>=D,y=r.diskNumberStart>=U;let b,g;if(m||y||u||f){const e=4+(u?8:0)+(f?8:0)+(m?8:0)+(y?4:0),t=Qs(e);t.uint16(1),t.uint16(e-4),u&&t.Qe(p),f&&t.Qe(h),m&&t.Qe(r.offset),y&&t.uint32(r.diskNumberStart),b=t.array}else b=ne;r.Me=b,r.je=m,r.Ye=y;const x=ta(d);if(c&&ra(x)){const e=Qs(9);e.uint16(X),e.uint16(5),e.uint8(l),e.uint32(x),g=e.array}else g=ne;r.Ke=g;const S=ua(b,n,a,i,g,o);if(S>U)throw new w(Ws);t+=46+ua(e,s)+S}return t})(e.files),{ut:i,wt:o}=await(async(e,r,n)=>{const{files:s,writer:a}=e,i=new f(r);await Lr(a);let o=0,c=0,l=a.diskNumber,d=a.diskOffset;for(const[e,r]of t.from(s.values()).entries()){const{offset:t,rawFilename:u,Me:w,Ae:f,Ke:p,Re:h,Ge:m,rawExtraField:y,rawComment:b,versionMadeBy:g,Le:x,Xe:S,Ze:z,Oe:F,Ye:k,je:v,internalFileAttributes:E,externalFileAttributes:P,diskNumberStart:C,uncompressedSize:T,compressedSize:V}=r,q=ua(w,f,p,h,m,y),H=46+ua(u,b)+q;o+H-c>a.availableSize&&(await $s(a,i.slice(c,o)),c=o,a.availableSize=0,await $s(a,ne)),0==e&&(l=a.diskNumber,d=a.diskOffset),z||oa(S,18,T),F||oa(S,14,V),(v||k)&&45>r.version&&ia(S,0,45);const W=Qs(H);if(W.uint32(M),W.uint16(g),W.bytes(x.subarray(0,24)),W.uint16(q),W.uint16(ua(b)),W.uint16(k?U:C),W.uint16(E),W.uint32(P),W.uint32(v?D:t),W.bytes(u),W.bytes(w),W.bytes(f),W.bytes(p),W.bytes(h),W.bytes(m),W.bytes(y),W.bytes(b),la(i,W.array,o),o+=H,n.onprogress)try{await n.onprogress(e+1,s.size,new Pn(r))}catch{}}return await $s(a,c?i.slice(c):i),{ut:l,wt:d}})(e,s,n);await(async(e,t,r,n)=>{const{writer:s}=e,{ut:i,wt:o}=n;let{ft:c}=n,l=e.files.size,d=i,u=e.offset-o-(i?e.He:0),f=s.diskNumber;s.availableSize<G&&f++;let p=sa(e,r,wn);if(!(D>u&&D>c&&U>l&&U>f)){if(!1===p)throw new w(Ms);p=!0}const h=ua(t);if(h>U)throw new w(Ts);const m=Qs(p?98:G);ua(m.array)+h>s.availableSize&&(s.availableSize=0,await $s(s,ne)),f=s.diskNumber,p&&(m.uint32(K),m.Qe(44),m.uint16(45),m.uint16(45),m.uint32(f),m.uint32(d),m.Qe(l),m.Qe(l),m.Qe(c),m.Qe(u),m.uint32(R),m.uint32(f),m.Qe(a(e.offset)+a(c)-a(s.diskOffset)-a(s.diskNumber?e.He:0)),m.uint32(f+1),sa(e,r,"supportZip64SplitFile",!0)&&(f=U,d=U),l=U,u=D,c=D),m.uint32(A),m.uint16(f),m.uint16(d),m.uint16(l),m.uint16(l),m.uint32(c),m.uint32(u),m.uint16(h),await $s(s,m.array),h&&await $s(s,t)})(e,r,n,{ut:i,wt:o,ft:s})})(this,e,r),sa(this,r,Nn)||await i.getWriter().close(),s.getData?s.getData():i}}function Ys(e,t,r){e.We.add(t),t.catch(e=>{try{r(e)}catch{}})}function Js(e,t){const{it:r}=e;let{$e:n,extraFieldLength:s}=r,a=64-(t+ua(n))%64;4>a&&(a+=64);const i=new f(a),o=da(i);ia(o,0,6534),ia(o,2,a-4);const c=n;r.$e=n=new f(ua(c)+a),la(n,c),la(n,i,ua(c));const l=da(n);ia(l,28,s+a),r.et=l,e.lt+=a}function Bs(e){if(e===$)return ne;{const t=new f(4);da(t).setUint32(0,e,!0);let r=4;for(;r>1&&0===t[r-1];)r--;return t.subarray(0,r)}}function Qs(e){const t=new f(e),r=da(t);let n=0;return{array:t,uint8:e=>{((e,t,r)=>{e.setUint8(t,r)})(r,n,e),n+=1},uint16:e=>{ia(r,n,e),n+=2},uint32:e=>{oa(r,n,e),n+=4},Qe:e=>{ca(r,n,a(e)),n+=8},bytes:e=>{la(t,e,n),n+=ua(e)},_e:e=>n+=e}}function _s(e,t){return e.offset-t.diskOffset-(t.diskNumber?e.He:0)}async function $s(e,t){const{writable:r}=e,n=r.getWriter();try{await n.ready,e.size+=ua(t),await n.write(t)}finally{n.releaseLock()}}function ea(e){if(e)return(a(e.getTime())+a(116444736e5))*a(1e4)}function ta(e){return i.floor(e.getTime()/1e3)}function ra(e){return e>=Ns&&Is>=e}function na(e){return i.min(Is,i.max(Ns,e))}function sa(e,t,r,n){const s=t[r]===$?e.options[r]:t[r];return s===$?n:s}function aa(e){return e+5*(i.floor(e/16383)+1)}function ia(e,t,r){e.setUint16(t,r,!0)}function oa(e,t,r){e.setUint32(t,r,!0)}function ca(e,t,r){e.setBigUint64(t,r,!0)}function la(e,t,r){e.set(t,r)}function da(e){return new m(e.buffer,e.byteOffset,e.byteLength)}function ua(...e){let t=0;return e.forEach(e=>e&&(t+=e.length)),t}function wa({version:e,bitFlag:t,compressionMethod:r,uncompressedSize:n,compressedSize:s,lastModDate:a,rawLastModDate:i,rawFilename:o,Oe:c,Ze:l,extraFieldLength:d}){const u=Qs(26),w=u.array,f=da(w);if(u.uint16(e),u.uint16(t),u.uint16(r),i===$){const e=new h(1),t=da(e);ia(t,0,(a.getHours()<<6|a.getMinutes())<<5|a.getSeconds()/2),ia(t,2,(a.getFullYear()-1980<<4|a.getMonth()+1)<<5|a.getDate()),i=e[0]}return u.uint32(i),u._e(4),c||s!==$?u.uint32(c?D:s):u._e(4),l||n!==$?u.uint32(l?D:n):u._e(4),u.uint16(ua(o)),u.uint16(d),{Le:w,Xe:f,rawLastModDate:i}}function fa(e,t,r,n,s){let a=0;return t&&(a|=O),r&&(a|=8),8!=s&&9!=s||(0>e||e>3||(a|=6),e>3&&5>=e&&(a|=4),9==e&&(a|=2)),n&&(a|=1),a}const pa=1048576,ha=".zip.js-temp";try{de({baseURI:void 0===S&&"undefined"==typeof location?require("url").pathToFileURL(__filename).href:void 0===S?location.href:q&&"SCRIPT"===q.tagName.toUpperCase()&&q.src||new u("zip-legacy.min.js",S.baseURI).href})}catch{}de({workerURI:e=>{const t="text/javascript",r=(e=>{let t=0,r=0,n=0,s=new f(1024),a=0,i=0;for(;!i;){i=c(1);const e=c(2);if(0==e)l();else if(1==e)d(be(me),be(ye));else{if(2!=e)throw w("invalid deflate block type");d(...u())}}return s.subarray(0,a);function o(){if(t>=e.length)throw w("unexpected end of deflate data");return e[t++]}function c(e){for(;e>n;)r|=o()<<n,n+=8;const t=r&(1<<e)-1;return r>>>=e,n-=e,t}function l(){r=0,n=0;const e=o()|o()<<8;t+=2,h(a+e);for(let t=0;e>t;t++)s[a++]=o()}function d(e,t){let r=p(e);for(;256!=r;){if(256>r)h(a+1),s[a++]=r;else{const e=r-257,n=ue[e]+c(we[e]),i=p(t),o=fe[i]+c(pe[i]);h(a+n);const l=a-o;for(let e=0;n>e;e++)s[a++]=s[l+e]}r=p(e)}}function u(){const e=c(5)+257,t=c(5)+1,r=c(4)+4,n=new f(19);for(let e=0;r>e;e++)n[he[e]]=c(3);const s=be(n),a=new f(e+t);let i=0;for(;i<a.length;){const e=p(s);if(16>e)a[i++]=e;else if(16==e){const e=a[i-1];let t=c(2)+3;for(;t--;)a[i++]=e}else i+=17==e?c(3)+3:c(7)+11}return[be(a.subarray(0,e)),be(a.subarray(e))]}function p(e){const{i:t,symbols:r}=e;let n=0,s=0,a=0;for(let e=1;15>=e;e++){n|=c(1);const i=t[e];if(i>n-s)return r[a+(n-s)];a+=i,s=s+i<<1,n<<=1}throw w("invalid huffman code")}function h(e){if(s.length<e){let t=2*s.length;for(;e>t;)t*=2;const r=new f(t);r.set(s.subarray(0,a)),s=r}}})((e=>{const t=(e=(e+"").replace(/[^A-Za-z0-9+/=]/g,"")).length,r=[];for(let n=0;t>n;n+=4){const t=ge.indexOf(e[n])<<18|ge.indexOf(e[n+1])<<12|(63&ge.indexOf(e[n+2]))<<6|63&ge.indexOf(e[n+3]);r.push(t>>16&255),"="!==e[n+2]&&r.push(t>>8&255),"="!==e[n+3]&&r.push(255&t)}return new f(r)})("zb1rc9u4DjD8/f0VSWaPR6wgrSRf4sihPU3v7bbNNr1tPW5GsalYjSO5FJ00iX1++zsAqYsdd3fP7XmeSUYWKRIkQRAEQRC0BO/f7cWLdKySLN3jXN3MRRbvTEScpKLR0L9udDkZ6FdLsFBYbMWsIpPF7vYWudjJlUzGaq83ztJc3T2UMroJBbw9+ybGKlTwZnF5JmQo4XWkpmEKT6TMZJjAhyRVXZ06o4Df0aGYQs1Ah3J4UQVm8DqahxE8jlT0MRHX4RiOZXaZ5CJcwHvxQz1Jx9lEyPAaxvJmrrJwCvMsV69FnkfnIpzAexmleZzJyxMlRXQZzuGdiCbR2UyYiBv4JBNVi7iAR9nlXIo8T7LUxF3CYzG+F3u24rmYxXDFr7JksuPBOd9bpBp9kz044RW+4Yin4nong1s+HI5g2/+oF2fSmgm1I7jXC9qdvugJ22Z3GKW4WPvcNR8V9xtqoPr9vv+1edDtBgdBs9sKKaJ3O/RGQzHiarUdchGruN/r9lVPYWnUqzuS3w6V42P23u1QERjZ7/e7Xwlo0G435GhFaYfH8AIewgc4hR/wCJ6O+G1vPIvyfOezBiYXY5VJS7A7NU1yV3GxXDr+KprPRTrBaF0Hb6k/94oaeEvhzkR6rqY9TJFyr5fEluzzbqMh3LNFHAtZ1Dch9I6tIh6Ee3ajxNs4zoUCySDj0ukSCntZn6e91ObdIrPg6mvingtFlGelsOsxkLweZbcwsqf4U2q7GH19NBSIj0bQbo++/qCA39GhUwoFLR36YLD19eFQVjleUKDIcUwhk2NF3dWTfawldrEixB8THEt9FcN0xEY9g0y1OhfKYndSqIVM/6ljVyvdA+93xA8l0km+M1/rC41zYVCtCHmfe/liLqR1p4ohYwmQ7E65ZU+BdEX6fSEWyB1WEM8W+dSqSIYo3Gqxnu4LWfSRmwulh7jlgXKpvgyEexXNFoLL1YqB4FjxlaaonbccYY4jZQlQ7C6JLY9zXlDDcokhZUJMN3xHuCaLYiUFiWGRx/FHkPK3bmJJ1jM5mgHnPB3UMoZv3cxSkIK3RArKZ8lYWB5UQBhbwQxJtkBcSaGmjqqojlerBA6kqtAHlnJ8Zuu6rGBRtrEZPCjAHZZwRAnHEryqUuqORTKz1K/NgDFWVMLkUQ3e9EH2vUZDNRqWGErHH/G37tRSoAONwG/tt7rNTqvb7yvHBx87ZAXTEGsDkvE+YUcMVGjJgbdUoTo8bAaOYLbvHRy0fb8T7O/vdx4ISELB+6krswXSyK9rn9ly2Qwg00AhZXdI2ZpZIu4bDSvlwxHrqT5vBj3l8GbAUneOZCVxCHr38JoWvSVYyRATTHdYdYVtl0CWYpiM+v2+Qmj4Tq0oeExS9t9gjVRCDzIilqQkFgOQkGhnjaYPys76zWAgw9SdZ3OLEQ7T1Qoe8zvkPXl4N6+TylsXKefXLhQDRTHN19baofoJNaDZSJZLK8U6/9oaMZDDZMRTYhKQHh7yblExuYKLejHDEUGVgPwSISMWZYUdidjh6eFhdymGcgTNxj/lcmkp3b6UYb5qiDRko6GqpncfWM2GZJAyBmq1WsEnToxmk9EXlcFB3VPu2SwbX5wkt4K3/QCUe8mH/n4zaHdb/kETWl7QDJrNlr8PQbsTNLtN3wsg2Pf3m83ufheaQbfd3N9vB94IlHvFh37b77Y9L2gdgN9tH+zvt5sHTQhannfQPtj3utBsHrRbnYP9bjACMbCUe8KFe1IMHgbKPeLCPapHHHPhHrNQuVLkyJ9W5reaIrApJa9BgJdVfuEe8eEIhHvMPRCrxXwSKXEPEXsoOaXnlfAlcHTyx+4LF7uw4ltYv7clW3KPQGC3KPcYMnzy1NbEhKMj6x943r5/cBC0W/st7+DAZ2oqs+sdJLLE2nsUpWmmdqZRPt25zKTYUdMo3Qm+tps7zo6/c5aofK8oOSbKzJFHIg3NDAVpyaHWjXbqWGvBRi3k+AynWBQx6nmYch9asZsvziIU7Sy/82AGfueBNbN9xhjMbO6XNO3mc8PoMBnS2ofNrjBSkXtUMVr3pKdqeIMhkizythFba4ceCXbQ89sNI0ZpEvd0umIsuPEsQ3p2j39tBQetg85+cNBByjepl0gyvQJejwn3oaXqVWesohhDTyBXpxU7LL72/YOB6Dfx0cbH/sFAc8lQfZVf01A15FI10qVspLWYf6pGunqk54+C9R8eiiXKC8irVw8tVc3OiDVIuHRPIOPC6npsTaL0C6kwI5ERBT/8FPNk6I0g58nQH8GMJ8NgBBFPhs0RjHkybK2LrfsHuudtdocAl0uLwEn3keVDNhROc/QVf7r6x2+Z386oJH9FqdsQM1u6iKscZhAxe2wjKFu6V8OyZ34NPDZaer0xjyDiM5hR3qYHOYOcxxBztcL6UyPseOkBNoPaYucUCkbUJHtGoeaIWmZHFGqNqIH2eOmtVvCa3yWX80yqV+KGpjxxvfPafWo9Jkkz10MYPledi8Iql8ulL1rg9dPl0uvL9bGZpFfRLJnszCMZXeY7KtuZn11M4qAckBn3bSvt99vs8DDQ/aHRAQuT4pqGLK2WjkjasjIGUyMNX+txPOGFNDLnbzWF86rWisGC+z0rWy591p/0Fth5mCjmOReuSGllZc1r42oxwgGL47U/683MSqKeOGcQca8XHebF4Igw1TAafeX5MDI0w72y1EZjdhiX0r5tsykKjVr4nkA8nI0YTGzeWhk6v64koV+7bAVPw7+chwD56nv+CVKzBBv1lPuWDxFVEug5KuUC5b4deqOKe/3aDHrFFNpPiG1blIW5JbN3P1isGlMKhRKzqEpxzaRG/MA7aAdBq9v5KoZqBOnQp2i/3TpotzvdoEvxPVO4AYyZkee8Hfq1OJ/iHlNHI8fCHD+ZtIRJJtz3ltAJQbif+K5fm6ho3fCJ73pAb4+rZq0mybnIN6EC8t7H2GQjzxTQ/VGJEkUo2cYCCzoRNEp02etDw6TYydKdaCZFNLnZ0VAnO9PLaLwzjmYzMdndK8ETkLLSuhWm5oKhqPKumHWnu/y80SgCuBx5F6WT7PIjLkdyzk/gG997UQ7NPL/O5GQPnlSReXKeRmohxR585Hu3yfxb7kRnmVTOeCrGF06ZqVcoAHa+m7a+KwTZewXjfL4+c5NGY+fh8YsdnMHzxRy5j5jsMbNMes79Drzid2l0KcK946NXj58Geyv4jSs3yrGO1h1O+6FJ8Pz1w0d7qxW8YvCmliRRQkZYxzz0RRPqOU6eP3R8k+ULH+5NhEyuxBGKDCP4nQ+74Afgd0bwCx/6HQha0AxG8JL7HjzjQw/obwR/1DEPQvA/Go0pSgJqJkBRsBCIBKaQomBPkIq/JWC+5sMNtcoINiNQeHyNA5H+l0vlvrPqIhd9a41I0HqNk13G1/QPhvNyH6Wu1i7nWaPR0T9d/NnO2iOR71yIm508uRV7hXhxxYd5tZhDVooVjnnWaz3I7KDbj3txofkRPB/GuIC04n9knHNvuexyKlWHW4y4kTQ6h9HhYdD6SiGjXDg89Ds6omvC3a/SaDHAwCQQAr9oKF8jBAMRjw4P/a9Bt/nAivr9fZTT8mE8oiplo69iTbEU47wPseNU3ZMPmw0xiMPYaY16M5QEWn0eL5etPq4siS3KodIVH30lfkhhU3WMCkxUt4xpYgzWX41GqzorqXOCb5YAj60m4qdffbZ6t8HUiAZAFe/+iBaNmibwJ0EhPyuWWIYgfqK2y4ZWgg0WJQYFYfArxpV5xjzmXm9XDsej3vgrz5dLH+lgGI9wXiQCyHj8NUYg8eFhgI8mPlq9jGeoFkJEZF8PDgBh8AzSYTbiYxLRUFpDwW08GukaL7jf6baannfwIPraabeb+w9mX4P2/oP8q/nQfTCGa45RyTAbVbFZWWNcTrb6ktaRuIDEUq/5NZHdNSqqQGFsNuILvqDYBcau6vnbtfwcH7WVGEapetTqW6khwVFXjMmfDzeatIsBV5d+3Suadbk0IH5tOQF2Z8mo4qLnFUq8MRLDjMdIBxGPUfAd8xgF3wWPUfDF5lzDFCYw52Lojb5KzHGDGp9BM/Qx7I/ggothgO/BCC7pmx82MdwcwRlvrZFPaojnmufDuR4WX2fDm0pRGA0vShXimAbBJYI6G8GU55jQZLmoZ7ncyDKnLLY/ggnPManJdFnPNN/IdKMzUSNyTGoyzeuZbjYyXehM2FKbt2DOr+GGT+GCT9aa3SrHjBo0G44IxYgvCgRoGqohgRjaokIEsq1FDRe2PYJrPoc5v4EbfgEX/BIu+XUhKGSrFSRbpxWkMiKAj1xoAeI7V/rlOVelcFVEUIKaCFVnMK+0UPMRDKDnbPWbkQCwov9EZhC0GBM297GBPTHLRaHpL1qK3Mc0ElJOHLsXtNuoDhtYinugA3KAOh4TSAcp90LbTllo2xIfCgQqJWyuEHH4Ig8Pu/ibFtK0WL3ByqGizUJC1m37jd4ZzS+4aioj/RFjq1dGU3indVhJbO1aaaWVNWLOsBKpUWWh1pV2KSm7eMvg9A0qHnTytLaYkKynhsnoK0+JOw8T26eArwMBBQIdaFKgOSpa9tZdWAoStlpBJvhr96nm3FrmEDW5wy3XdigA5lsSVMIP5ydmh2MmfqJgvytEwFCAjK6Pi5AC0yqzi4S4CiWQ2FgkepvObsJ0xe6MPj5XkSTxWxBRgcb7CqL8Jh3v1LX1m6v9qhYxfAlz+CWcAcnSYbTishcPrOg6SpRFkMqFK+/fFatP+rxzLcy3ubBS8OD3ocIFYMwpTCHSRA290S5xzeUyG/r07o/W+PQ33E+UkEOMsATBykd2gNpnTjEmDOlAuQJ3Di2d8yNj4cxiLNRVigydjI0utVTevnRq7+wfz1E/U+xZLIQlQcAYPHiJ2zklDvVGRiFW3r0MFTwLsbnpJEnPw9QgLVtpeRMX9o2GYne6LlmpPTP4SasKQK4ja1FGtXaEYIolbyWGXAhLCohZT1aLmXJMqFrcjN9Q0rRYDURYko6TxcqHMWyrLnLMi0ocvhz4obfGgV8aDjxe8mgoRl9z1P8ksTVe674nrCdKbM5wVcWKnabovzMSVgU/+S/SfgpfwgR+CWPTjTnSftEJ6cCa8XujoBoDKf9uaRLTVF/MIhPs1Y3hkTJN3gmkDOKKWPNe0UMa0qzQQJaUWrwgvUao+bBmQGrpDdKNoMgLf598k78iX63nI4JM7hFkSXOaMhO2RpoQGzIUbJW65bqY36PDUl/zEpUPRbMmwoqhlo8RTaG4TbuB5ep5jCiWkEJC+5F65SrgTjcMsbqwFO8L9xeuGJQ9P0WspQz73/FLfBytWAV5UXYeJBBXKMzhWTgrs0QrLnqRwU2jYSk+EVYEqlRajsuZz0m0qG32XiwiTd4nPUejofpiA8OSi54lyi0h2iy1JK5dyskZaSq1rbEz/sdzhto6rzd2nvf5orew+fNN3jEXloIFLOznqI1qNGb3GEnCa5qSXrxclkkS3OLFCtyYzoaFnVY1cQ0+uC4DNTmGAgt0XhPGNSqlW3QETxezmSk851vmHEgMinZjUShIXldTMsoNSt4UEpam2/qcbe3J6HqPYO36ON2PIzWeFuljwXd9WIe3WjHLgwR+Aw++4Ap8Kw/AGuW1Gn3GHVQ3j2YK3riV4gTk9vpVIoMBuV6v3NTr51CxlpWmBlOE8QreMMih+8AKHvwyTPXsWbIWBuOKDiLwAJMQ0dRiMQ50bsZQVsZIEy71aUWxEu4uxE0e4jMcwx/hohxgH4VM4mRM1Q2vV/CShmIiiGOmwhrjWI9ldmk9Ywye0ddMWAu2YnBdjcGpWN/D4JxfDSxhBo0WwK45P6/0CrqxluCLVOTjCCUHMgT68O4FGu9kqUhxzV/ujLO15as8VPXdUFpyCnc8jeSjbCIeqpqNgDK0Ty26Zq4uBjWKDA2kVNWIiWmELkRUWk/D61XFPeSG0FJ+K0Yfqi7MqyqtDxgOt7K4uSjk77KgcmuNKK1MebOOXeHOkfzLzxebn3FHwEzql//6pL6VNP6mgHu1Mcn/yfROk1jJX5ZL6daqUdHJOU2bFWY88APG1jPztbzEqsDb5TjulOX47GuVtN4otiHY9sg8o9zdDNhqmwhbzei6ajjhlTLU2X8L3f8ZakkAg+QvUPynCCy38grhidCuhr6Pe4HbKg3pzwdFSiPhBBGmGA6NhPvBClfMO5u58JvXq2UQDGexCu2pRnhJ/lc/kSxKjMs1jKfbMZ6sGFgaUCU6JnzY9Not/6B70IH2gb/f9r3WAXT3u1438A8CErDrZRKbTUAIYpSfrUTv/FTBYIScM2X1PSZ1WIj1tNV0hO1JaUlGCFpPKu8llXW+p0iA1c2oUHQu1onEiCr3WCsanKQVa0XbNTlMR/wW+eVXhXOOLrI+zdRY2sl/uRz1k3KOKk49BGL9iHhc2YjC1I3wV/TiP+kLWa31JH8hrNRNLhcz64WwpH2MQhMDv9na3293/SazfZz0VAVKW/aNqi3df9JnDU+XzYcJSMhGVR1v16xHgqVONwxKO7LjshoK/K+KoY611mfHdY0UaY6qby/q30rDBkyi2dDDn7EhAXfj6SKlDdFQgRSh3GIrW2PsK9Pou8J2VkyQvvW6T0zCDBa5uA8hhttkrne/whxwdIhJOIOZuBKzMIKJiGeREp1WuFhxAdcV1yJVLNxwKt6VxtDXIP6CzxqNpNHYXTQa1m62XOas0di1duPlcjdlvazR2M2Xy93ZcnmxXFp6C/093PCnwroBnH1x2/diYM3pywcBN/wzfiJZx9o7v03me4wVGeaMhTf8Eb7GcFdUvYa+FaR6yQhZo2HlA5MPoZ1hB7HQmlBJEa2zzOcJbsH8ENY13ICFrEbbcVLlaRNnUltMQa1NluAXg3n1MdQWAlNthFlaap5XlpooGdZWdKKapz6IPzcrBYU7gMUA9tg2w9JE7/zWRrt7maR1cYe4o8Ml7FprU6uspDpNw6tC/SI319UIotvn8abgGNekXFpu4QyhBS9ZTiRogGNJrgr9Ss5jpwszA4IsHHSd8ypTb6bh1SWOiKasvB/hUowKqX/NnYhhkqSmV9nQbXVRei+KcKLeotEYbxajCxlvwifouE7j401zXcXXrXRBrllMU+A30ypRowNVpxGylBZuuh5NttJrVr1ENqd/k68kyFe22dtv4ywVp8hqjCUuuIZmH5riZ1BjQ9F21rOocZdrXPSXbGWTqcSNhpUN5jgs5zRqL9dG7YxGrflMozZqNKw5coQ5LNYbXC/ScAWYc1oAVXbGaC0goomQlUUFlnNj3ekl+HwxmxXG9FKvRo36VlGlLbP4NLsQAm3oL/UxCSPJrpuDJ1Zp7lChbWcSqWivsFNQ7jha5AI3S/QYuSNmEqYwyVKB+ibZy9C+epblwmKhqEthMI7SsZihJRXCwXdaVq2YNUflcqOBPBrZV8mLDTanmgWSPDvXXDCJLWLkGWs08kohspXHIVOY7WqMVnTssw1N57qY+MOIiexOYiW0vdDcuqMxhYSJHESf/DiW2VxIdWMJ2CuoZQ/uzoUKsa6yrn16VNc+ZUXFY64ajXSQhslymUHOpVtSyGCvfHVQ5REWYQpprSZ1vuZTsZWXWgfT8buq7G7U97GZ6W1SYtAuFCbKykQlwyN1hKG8z1jvWa0hT+8tMpO5eD+V2eJ8urbc/Lwh5Cn32hy/wf7AozhI4ZBupXijnsEexzbSMYleocfUY/OmV3S+jk0N8WNjhYt0WaU3dNk7kyK6WBWxWB9hmdMJOOcVyNvQEBW1MNoelwyAaO1MOp4Vqe0Eg7/IZkh/LV+K6tQVs5CoChIys9B7wfdoEMJbwfeoBXtmM+rxz/mrvMc4d1KjJkd9xvj9zZzGq+Z3cS9zaeGYf0rU1CpIbI8NYv5QhOsfk9R8bDSsmJ+ipbKbLdR8ocjg2yOIeWmBWNAl1gmiDaYKesqbr4sKit0Rtyr1J7ldWgHUVna4li7nuHJZlcJdkprKhPmKpqXF/VJIk2JUtDVFTQlcrTfLLtW9IGrRu5xfNRr1hP3653UWU7LXRVpjsNpsYWOyvqsmMbHis169dbVPsNnS3j2elG7lSdHacB2zteBsPYjKu2JG//RTijOHunp+X9u4o7FJh8GmIBhaZsVclwXFxsrPrsQroXViKHNoNXlNc4bTECkfVsX2sj5GVerl+6LH0rJHpdmRSCCx0XA3sbnoKZ4Myg8slEU/oIFknTJEjTBoosAiXwseEO81Kss0ukrOI5VJsjcsQ+40kpPrSIpHWTpeSCnS8U2jYb0W/E+TlPxBI+md4HeZCPfcX8eZFL9eizPnOpMXQjrXUX7pfsv3AF8+vHtRpslJxMl/vZ0lZ5RKv5loF2P2aisU6jKIRfhaQC7CtmjCTP9EItz1tstPu96WFaHBxyXhYftRSpPkjJKcrSoKv1vBu3Lj4psmjQiemBdiLh8FfEdGs7EV8VyUZAgJ9YseS9lcGztmMM7SODkPY+R7NOm529rEKm6Npz3dJE3U62yyQAnP1SCKvtkOgO96q9i9H03Q7kVD7G5BkE685UO5q3I3Tc6nnyIl5OtIXoT+CmZclJx1udwqLNYFvgUKnN/0wPqOG3qs90pYRMzhHmbYAyMvvpiE38WKIdat78L22T+k+/rh59OTh0+fnL548/7JsyfvelsEwmRVSKS9uiiIC+tSSFytIGc9PJhVyAW66hdF1c30XDCYYjIrW6C4YL0nZTMUg7IV7wXo+oh/pSVmlzelmoHG1WNhZRAz+Kjp8CFO/Y+yVMlsNhOyV2PaM9w7/Ch6GshsQy5aCyKkTwJ3Nfqpexn9QPIqRiN0WoxZMe5oUJbMSqAsAOZSXIlUPUIU4hA0YapWuOutjBCyk9RlrFL82ZxixrV55Bqq6SucrriqaOKtACnyxUyFfy/vamMBUpcS1EDVgqGHJLGbuGjIJya1Abi1AQVj/I32ZSpR81VBJoYKlRnnipHetTAjRIZdbr+Wp1JVsSyeWAKGJnZUlIWHYbUCGt965VtVOFamWEd9SC/S7Drdoc2APVZM6oYGQwW5isYXuEuSTXCwkPF1VscesaiJdUcQwn8t54qtosnkCRLEb0muRCqktWcg7IF1h9JkKFal3lr3rqoNEQmbw1gQP01ia49EQTzR1mg814b3nL8X1VT+TWs6Jet9w/3QmVAC1S3CKlgDIT5lBWi2QqjR+AJhVmCelGCerINhK8X5W9FofCwk8BqZGYpgvatI3tX8D7wRaw4Ivoi6z4HfxT2nAb8I7czgpTDeDJ4J0In/ECt+PsvOotl72l5RZAjv74PfBQ+6sA8H0AHfgzb4PrTQXr4JfhMC8Fvgg98egdLU94bMX6UOfKFASqc562Y6hXFxao6gCfDwkG43xEPXxbE08KnBO8m97H5haJms52+Fgc6SlcUPPfABK9uCDhg7f23gD60udFpw0AE/6IJ/EOCpTWh2W4CHO/c7XfC9oAU+Sg+B1+pC09sPoOUddKDjt1rQxSx+EHS74HcwW9Bq73dGDOJthbehA/tYAY/q0KJqeFiToEuV8bA+7Q5WqetRrTAd1qzj6doFLfDwBGAxNHNVMzswh8sTo0vsaYtrsZOkucKVWRbvvBEDTadvxE/8C4i6tgxiLjey1xR1KaR2wgpwW5VvNtYLl2BCWTHUF88zVWz6ertcomD9H9STuXEym+GJfFB2fcM4qtwJ3I1FqBQskCVf42OKjwlFzvH1Bh8X+MDzIntwhq9X+DjHx4kI9TnGui2Pqm+U+4eHyqzu745wZr4t2yAZHKMq8AVyo4cI7gM+TvHxQ4R1mAtV+ZGo0fy9o888MPZlZHUOCf7Y/vogSfprZ0Ir8xdDnIqtcKhcqz81IX4kChvip6IwIv4sOB4knP4kZ7kNiWnfl/nflvkfCy712yfBU/32WvBktaqIe1I/6/BEDR06hSn6weAgDBwxWi739mpWBKYvkJujOpBPKg2GJZmO28Nlgp68dvZsZe/tWHu2tPfY3qq0kqisDdZ6F0+TeOVJ9ALDquBieAzdX/oNCbhJVp3/TWvmCQaecN/hEf1vwrbJoUnx/dJ8p3R0KISBzlP42qhR9plaM1omk2oJCa1O2w1FJ36eCFu4H2v2G+8EHmbApAnokI1HSAvwRVww4ilgTps3IeGJ4zcILAj3uRj+jpuR9mdl+yP3Ox6TEe4rMTxRVsLKiI8CTzf8Vtupu1pDJrWONGPb6piO0Mqb3rB+5Xsw4rKsF9VF/kmJ53XyEe6xcB7VkH2i1nYVO30x+AVPCoe/qGHQ7tj6iEttG/OoNi4/KHsf9ICHlFv4yxwfEv5SmOO8lrJP0TfGr6cKHbb4h4dd+0PJHVzXJdbhtxkQp3gjwlYAX5Ad/F7wGfhFhM1gv7MPL5FrPEP+8QdKLkKFCSgVmkGMabo43RYR6NRAhRm8K9mPSZIo9AahCGoXvmFpMUbl+JjhY4yPBT6uVegEMMXXCT5u8HGBjzN8XOHjHB8n+DjCxy0+jvHxAh8P8fEBH6e6ar8LK3jwXuGu8g9VVK2IeVRW/zWFP2LtfsPHU4Us+gm+fkZo7/HxVoVdeFw05RNGvcbHO3w81w3/Q1ifVDE1MPcymluoIbLuviOsb5jyCT4+qtBDrferMlvw4C1W4u9n/a6qrI//tazPVfgCT5K+Mr+/6d/ajHD7n80IkPFj3J/P3G+Kp5C5HxVPioP/GdvC+I5rs+a2Wtf236uUNKdcK2s4og2FqbLI/EgpfSKJ1XjXw6JBpLENFcwKk2m9U6Sb+lLQytF1XVEczP1DWHXkVgeUd/BcA1PoJkYO1ci2jZslk6nciC1yQrINHmRr3N1HXy7mNA/PbImH+/HEDtBhuKy3bo8i6vYoxZyBR6CNfIOGLDwZypFtFzi/M0sd03yxIks8Yz70BWlp3RaoKBCrmVUFZtX5SjnMRsulh6e/9FsvHSY4zYjBDUpggoUeFFEbwkCqhYEPinfhVPEm/FA8aHfhkeI/kJvZPjzFV/iM8R14rzhOAnZwAG8Vb3rwWHH/AD4prsc0vFbcb8M7nfqb4o4PTxQf7qUCd98SooVI3uzBntbb7Yh0sgd7e7AXJ3gahZaY1UcTxDVeGUjSfBHHyTgRqdq5FJcZgdPyYplobwQfFV8oK1U4UvEtUTjwCjz7B6z3XA39zogHgC/7I96kl+6I79Nq4pXiD5VlVXYKBf0E3e4WeqQFSrPP9Zl5JAPerX31Wy08/bT2/aD2PWh3egH6n6h9369/73q9oLu/Ab9mZM2Qj2CNTS2bnqlkmzF4o/itsl4pBl/o7TfF4HdVmXcXzGXdSEnUjZTutF4aJYEBzn7DdBT6KHOgaJA4fi/rS7IOzdgqaHdNIGh3WW1golxs++vHqGSfa6dBP+VydnGUFG1ddeESC4+J69FGYJ/HjUZsZ47f5wm7S9HfkDRbYyXRozdABR8Vg19Une2YmrX9gBTxpSelNXSgwGBcmqG0kvblAEsPsf21hNiPUrtoK3lC2u/v94yMIftBuz0I2u1QshEhr3YKOWjv99p+YARMj5MjEzTYN05NHL9m4bxi1v+q//4f6rBMwXc8qFDOJC/XZLx/dNrtwEc5vZprnpVychJX7rrUclm+y8Im3je0afzfkchLe60NLVWDXyW2cN8MbRr7nArFBayjXxmkNheQVl/S8ouFq4TOUqCNGzkE8zt9qV2UVAjV+EQgWEZS2smJrWXxlwp1TmuQC697vN1uBz12Jx39pssohdRma5/1JtldveuwQtqxlilfjnqKq7qzI7a6niYzYTlOgqbC1AdFPVDlZRqE5fsdXbrf6f3LhfwFUjYLLozb62hAzv2H+l+4qawcVH4lB5XGTeUf6t/xU6nR8ocq3VTia81PpYZqHFVeRXIoJCgJUkIqIZGQSYgl5HLE/1DV2JhJC0/LFrS/W/PnV9E+DfLKLtWwi+U/BQkcaIsiSRBL0voOJeujx8lqHhxbpY5Z/amzSjoj2y0QnH4VlV/KxLiqrEcZV5UpzwsvCV9j7WTBHM3OdKg4tZ0UHhh0MJWFv0op6w4rlVzzWCnkVpeVhuLIU10XE5HPyvQrUh8rBqVVGZ1+Tdk664lo89jv4ML0hxhYtL4XLtoV4JPWtT8E99Ca6IcgX6DWxXqafp93KZXD6yaxY4JMubqDCqyG4zUaa1A+K/S8RED8xv5G2TW9kywYJUHxO44cWJRWqxTofYlOudwfgsFmY8jThYPfSl3BDzyf7fgdFv4JHJOs1rhratymcP18Tb6mxb/CxX9tniuSvtpI+urnSb+r9aTfVZmUininQz5u0pOHTEWY+4hWnGNVR99UbhxiQUo+VXiy2/zqsHBfK8cZwVyn99dOwkzkfX9qukKHRtexXBaN4Sam0cCVxSFPh7KmrZjLdfUQlU2LQnl4qGWZXnLIsTaNhoUeJ/FlIslq9VQfTDdv+PtDsUYjsW3YpSTp+ieG/uJOzdkjHS95AsnhIfd7xZeaIuxG1nRB2l6MK/eRwGWL+1S47wXk+u2TgBk3shdWUeuCFP+kyKNmbqYRb5dnGhtEsmpo25h6xGekMPpBFfBYSIk+qsKeIuhjqh5L+FqmoD8b2PYMdSXDpOz/H9guKj9XjoNGfbisVA6PMdFHVTjE+Sz4DGQ1ySLMXwNGs2FPOg6jrsnQRC3hOU6/kk+LKEjXqcZxsLla7VULpmXNTLPtbJjib1lPy7T6kH7T0cD8hiae2ejDTo7cJ4pT3ieoFCgoFXvaVNMvZntsR58HrLdWk6K268Kn7lMgrzK6ZyOOmIFx2cEL/faWjN7x7bGAqX57LWBiughXulhsRotc4T7CZW0xjodmQL1TI92rNHu8U7bf+6QKAaOk/IzPhjPdUkyN7e+jYVTGpzCxbQb08aPiGUR98udqikNHQNxDee6a7MIWw9S5HuFx+FmJ9FzZPH9gZXbMYGwog2LGGqiN293kAHaXT9idkbkyjusK3LbSJfVY5jg9E3Ac0G+2P7J5oANTjJ44PDCdMumbVWfGp6hoyHqZ45CQkZZAvV2eljTuOHKE7cMDADNNuLvogMnSbbAyx8SyBzNNYmAieMYgdRwy5iNbBKs6W2qOWZE/IURWT9fAp77Tq5+Yx7YcpkaDgiTHY0qmPcWaRUQheekisera628yQuXVjbIy0u7gaWWsRwZEVdjS+jHAdd5H9XJ80ol4CBZy7sGM70NkXNZ4HNcf1oz7zS5EvEmue1C9/VEZyT/VKx3dlER7YyTlNIKzbDvv89lymezyGG0Ho34+oLmEEGjzPPR2eTKwEkJ17Qsqrr+T4oFCLMz7vqez+l0dF+rQvkmPVc94gnud8aBW4zAxER0dtEz76mq3y028IFayEitI5DnfhxlvIU3SUQ6CP+PNas0XaUxE5AUxia2UZwQjMsiw7biPvp/SXZ6R3Dnrx2yS3ZF4QW1JsS/L14+qYDDeLnec2FggINEOrHSXCPVP8pKPLqgSICqLFPiOSehr7DQhYCyMEcM1iIjnMkN3LYPvwz5awdcS79cS729Ab+LClHuoWsTuyQY19IWpiejooGUQXVfzntV2zrjHNMY8O4UmAxL4tMwlze8/0as0ecXGTWD3HVbxGwJIMAltL/GaaHF1f1AgfzZuqdGG/KPAfjLOedynapiPcCVrVWHbHzH0t4O8hMLBCHLci/HQWY8WIPVQ1b8fFQutjP9OEoH5nJmdI0pTBKgj+UdkV3heFQdj4vCYwpQPD+ET+4GMn9B6l6JR3YmQ6FcD+V4Hkjo8q4CkCKSgtvyQWtwz1UJBj6r0TmmaxKXjueTDuzcq/CbhCyq/f8fHL/h4iWpwwG9P6FsLv7XwWxe/terf2vitjd/8Dn7s1j928KPfwa/NAL82A/354wZcndfv1L/6lLtbfV7P7N8D7gfdeoJmgAmaAQEIqOZBe72EoEswAioE9bgIxQta9USoJP5d//yifxAF3kFnNapWoyeyvt/2QDiW6LcGB6FXY1BHGzK0ZdEyQaivkjWE+4fYWGDdymJD9UTxIz1KT3B43oqhsi3agBvpRS1KBkoNVUO4v6DXOlei5HCiRjWXniaGq7pIfmyWWvT1GSrdcPLAESdxZ8PSkewBht2jP94/OTk9fvLu9MlvT14/efO+1rgXlSkxjnH00S2MA1uE0VN9r8dQspS6dgpFQPol9aIXSic16dP1xMokVuuJa/sttWWF1qgI97rcck36KOwkPGU4jpOBh8u1a+HwBHI8tI+y5xhRuyAvGj6KKyfC/SIGwr0SHBVs7pUAoyDcqgiwJeZMWBiUmUnkuBIctRR/NzujStgkqE7pN6kh+MM2BE8y7btYuI+VI9wbfEwUNlQ2GiR5TZR5uVEDydPQ8embJPlrgvKLTTvJOB1iU2/R1RP9pJA6xGo/KYc2zCfmd2p+F+giZUISjLtQVBYDogOQtsG3cI8Q24yUnWTSx7G73COhC8FMNlZOc/UbZXOlfwk+P1Wl0ITlY6RZLZ1g1K3QtLFtgKD+GNNT/bYlwAFEDna3jhxYGzKKhJmFIrTVa9djvVW5hLhRh48Q37tlu/VhlofiEHuo7D5eNrtHH+WAhslj5UhQ/aeK/NY8VUyPxFs8z0QGjw8Fl7ZCRQhmsk1CfHEwCrBDHut3+lKGKkg6nQZm45HJisJOpTH4xJ1NzgtnKrte6cH9pBhVuwq9sh6JXbwhphXscuW+EY1Ge7946xwUb/vN4u3AL958r4z0/fK10+no19phLlmzGUHXosZkRJuP1E5n1QeHrijteZCOCo/3oLWjJAGiL9ybAjs3goERwon4J4ifOR4tfYePWGlMzRFTFNbUeSEMlQqH4r/RLw4695ugwygxlpaounj6VK6Z2xAu3d9Fo4FP95n6CcfAqlSmZ4myTYF4TYb+rR/ZWtc86FKS2KKeXS5Vv42uzUtNKdkUOQER6S62frkk0r0WjcYucsXlstPpcJ5S97R2+dacmruI9U9t7bqDp+61AnwggnZ56n7TJEYdBhtZKd03BZ422C1gY3VOpKXYIT+RlmTbqqLLq9XWNGRbqlZQJsIXYtYY5r7fZFB8rcipa1up+0I43cPDFgqImo2l7i0qDJbLoJ+6R2rghR394odUiSM1CMImyCV6c+zoxhOzlEu8OwVZZNN35D+aPvyQVor8r0pDMUgGqHZkOoHWL2KkvpIH9TZFtcHg02D4Hj6T2Grvm3YRR9KE5tFwSqHpmxe/eWDeuniM6nfBKGDhq/sHts1jtg49w/ZRiLgFxQmcm1vrcQrjuutxEuPw0gVdFo5mik+liTGh0jBsM1brtu9Fax23iT4oe2Gzq1qht1lygsqpxWy2WzREK6trKfK1uuVV3TSito1g5CLUH5jkPWpwqL86B72CvglgUZm/+v2bDWJ/lypoxBwU1I58n/jRGhrKvQzknZJbmggLhDjYLK1sxAS27KdupnqFGIYBBz9gSbmySoSAgU5oQeEHIyk5GDZJX1AE+osmkFrM4cnq5+ClBm9zuQaceyvC034TR8d+8z4eNPWWL6U3uIIvUMu0BEb1pwYQgKf6JOdfVV5yb6WKUTKkFtsj3Y91tYFivQJgveIHPlb8wN9ecSnLl/9pxeXfqriuse8Rrn3vJ8h+plhRJzsgUmo0rPWq3K9LOUqJM+pKaM5Z8I6K260I+t9mmWYOoVkxdW8UvSgjqFRzhOSeGZnfJGEgpCnkVg02bBZ2zc5Er7BlRwmw0bA+1CZDxYqPtQ1NbSpAjPtCK4Kv9P7ULVraTtRIy85GprdtKMftJ8T/rk/znh7YJVi10hAXCLFVK0/n8dhg0NTi60fxt8AVdgZ0LFqxsLkVC1p5XkcEyc38h+58jYsiiqboGiIqtLFNnGAkSuSogZyQqZyV6EWDT5LQLapZIeXctpNGY/2XsbtMy+Q/FA4MQ8LbE//936yfkN8gNCtzrMxJsGEXJIHqyeJC6bYUzTg8Vegh+s87l/YbJwrM4wJHNJlL+xRyTpXJwOkjZSpeEVPs/w3qOEfGcaRG7hvNNmg3PuB4DU8TDVEKoazT6dDYkMtlULNmMaIjpaIhy/SEppe3+KO0Y0LSgAWoZaS3N6Uy7E2pDYNimZCysK2XA2c4krWDOZx/m3RsyjqWll7WproHUVqjWX2qfxBZ6EBkXbq9z1sKj067HOVGFEH73sAKtDQ6sP6apdWj1mQhE7cmCGlI0wrS9D6k6RZI0xokFtZl0tJ+aJtoqhuvG0U4+iK4g8+S2aLwx0K/Wre8L1aetFAx+HKC2rqTrgR6IypnQHgUUYFyleISf6X5fWfinyr9e6pN3n43l8f9MNGPTPJy3x1NSaqtdQqVu+cU+l0Ud8cqN1EUFeufJ2hv4PtItQOnGdY0eG83d4K5cB/qwwsT3JEQ7hlu1wj3haIzwBPVJ2XMgPgWvYYeRKQEgzFHFQUsNC/L0HO+fsO97GnxjheQwKQMjXpYRh+1RbQT3sc9TsgLFpRr/lPqkYxuRNrxaJdPlssi5KCP8GkRHu3yRfkNv1yzcZaqJF2IygYLbWp+aF0OOm0NzKZ8f4YMmio3G3FugMxGPTazbWIcfAZpPzYzwydcOMY8xf3J3GiRftrWQhFjKR4NVWM8YlgabbxU10PG1PYBPsK46qrHpqustV0KM2kVewnCPVJmpJKC50zr+eitZmQJkre8g2YnaLVa+0ap6fWavjFoxSM03Md1mI+XNpKUUdh7rE915suBNo0ogr63EW7Wc/qmwGbQ+6yMCVYNllpPWxRHptkMbrSO7LkqX9GONq+1jaBfmGQ6rfsZWYtJrvNQlIGA9reKP1YOGZw3jTryuxoKVOjSRqhynNrlU7hT67fs5gOyXgelzcZx0OTKbtr7/X6Txs6sDFmZvquG6AltOayMx4yFGY+5tNuQ9bm0W42GGtR3oVgY07aVniH0TtSVniPgiyq3xlr6i1X3uk9UTqjQGyxO0N6HdrFt4/jle+q0oGVcXRqTq2q/TeDOEW0rNlnvssQp6vXhssSndHzt69Hg2vYLFNs+5Iihq1p3vMJuvNYsuNEYm4mtpm11UIELivS4jJ6aGz3SatmaNumTXPMUpEcIqQBKze6NGJAaICRvHrip9FrqPeVqa+TdOhjVx8OPteMY37aYy2AeXDyindUx+S73iE+SUrXkVq8lcdQfwm4FSAamSod4H2tSVNBJSPwrGi77qW3gaP++RYiBpOviJE8YaPtgrUbHWZouMlbLpdytZWCGH8W8ReKB5NVHRBMQsRkhImZQHoxzWtrkpQg2yRKyW4sJRvyf9RQ+hjFJ0UtAN/JSLVMuGZD68shoMI9IiWl6fKrQSZmJtElxr/FSvF6Y2KnCX+mg5h7hVnr6dbiyBk1W0GQFTZZrQM5jEuxyp+g8yImz4/7ksWBGQT1Rh5ycItIeA36Bjc0IitM7DGjWNCYxf1xo5e/vQ7ASgBGTj8wuzxHusTg5OojQknFOEGwkuZyKoU0G42CLzOAqOURnpp2Xev00bGVoFcFyU19TnVU5zCoH7bQnYGr9UJjdkxgNvD7jEZUmC/Vis0XPaitFr28wOMXBSIRukAgmSZ/cdEz1tK+nqGmB138Hxehwp2jPNlQn/WpEJeXWB3nhvLfZA0mB+KRCfFJDvN6a2IKbtaGelCwigddkh1uCYWvj3Ur7PMP7mWl6wLnBu4fQpM9TRkP/HUqzCfIbPaTrqXB4V8PabMvENT6Kw6EYn8xY0GFfYrcGazvBTzb09OuKAbOPtLkcfvS3VsNybSlsSX6ra0sdpc9qEXLkIS/2/WhZ+FYravQK9fBUsfQvlqGlDtNQ3iezGE31YtT0gIm9vyilZfAHhWLkDZV3b50K1R4flb91m49y+aNyuF4ox8H5odCD1Jpft8PBhLg0x0SkFPrXVsTEsXD7kAT1EN/+u2vkklI+/l+iFFw1FJ1xhW+mIzm1taCjMzQy/qD+nKSg3SdIjYav5bPiOxkw6KIOT4kSiCjOlN6iODfawA06pD3btNEgccRjhcbL0GYlmJSN15tJCI8MXWup167yKnZknVPVMyR9RX4Y1knad8r4NaI+Q7zQDw+QANHaFqe1e6hdJ8MzZbaIzzXFFxg29fybdLkyIEga2IIuDZ7B/xniRTHwu+TddgDPJc8UHRIWvI9em+CV5LGqu9V1fFYlaDL4TfJEZ8lSBm/KUJyy3m9SH+vttCDAbzrktwIwXlG+SJ6q8gIbJ2AloN+3fkGgXwowHfBhv4n+TDz0zAK/l/DRAcx+gI9u4bLlF1m6QHFd95UENAzCqwkZvNz81DQfnkk8nPlFMviD3n5HUSqtJ34uTVK1GY0nwQ+gdeC3myMGMsX8v+GOAL29kbVTY1m6LnD/IxiIUNh+p2Ir8U+SBN0qTZ7e30ymSXghaDE2F7QKGwuSzCdoyp7ipIjOlk+1Owm8yOqHfl3gnVYSrnnqRhKm5FUgdccSHQtMTGhBoTlP3WOd6Yan7kP9esFT94N+vcRdZQlnPHMssnoRDK54hodAbgSuxBic88TWZj5tBifcgyPuwS334BhX8aExUO757f5Yc1I8o1fskxCH3BG9yEbjd9seHR6OYWxzfTOm5Ith1JiODAu+5dKdSojQK8YtjB1+Cxg1kciKbtldPszwNLJ057JS4/udxi3lPqEPcNvAo8S35mDZ7bZK3aXujeR+J/DMdsCOWN2v4InNowYi8xYxWavU6k/a+/dA67ZfD6PG5K/bXjbw6L/cwKOfNlBzqBNY8Mw5QwZ11F8U+zNHzoLMEfo3jcZl4SuluIh0kmi/PDsqy3biSO6coU8rKKtzUFZHz6IXVPVjPnfQGQq6vtr0mGLbgpl+nw2PbZtuViT12M76Pbxya2JypX7MM+eotIOQ/Qt2d8zn9oWjL0QTXDpkTyX+/RqgUkr0Vc+21UZi7c9d4GgBhUXX4V/8rNIXptKrwjfxMb/4P4AjIinVD3pFkpySwJ+FlMObPVKArkf3/c04pr3HUf2pvP9pUSWH6LRwAP2EUNGvwlYCxfGJ4822qkHCRptQk9hqBvhiIPgHfglhvcQZXXE1+1UP0T8rd7GtXCPqnON69KqfaVPVF3zc7zd7icNf4MB9cXjYhKhBM8CYkeSzELQ2nAueAfJwft5PBudOYrfDtmMlzjlJXYJf9bPBlZPZQXs/DNr7uMN2hRsPp4JH2psRngEcrxvVzuqzGp7nSLka+K1WJ/RbrdamBxvPOLC5kaHf8bseXMhw19eebC7p9Uyiuxh8nOPjBB+35HXriF7xIfAxk6GECB9jDC7wcYyPF/h4iI8P+DjFJI9k5f7GY/C0DKI/BvgsC3csqfF7gMJY5YwlStFDwnuEdi3Ry+RbfH2Mj08yVDWTvyjVh2hpT9krvaJMZChgKvHWIhnKukcwTO/X03VamFBgwjU3X2llD61N7Blenru0imtyGR1ktsobdNGwaimK/Sbttyvld58Iya9l+IuEdzJ8JuGbDEUKT2QoU/gow8CD7xK7H55j+17JsH0QwG+U7Q02fgVTA8dDOC8Jzh8ERxGclOD4BxpOB+E4vgbUIkAeAfLrrrvSujN43BzQBDWDCMawAHPVNNzABVzCGVzBOZzAEdzCMbyAh6Vjjg6DD/XAKc8H0zS81pbQMzxK3u7zWW9m2+zhcFYcDdOHVPQZlYdDNYxG6BIGv1zzxP0iYcH9dm/R5z6tAx8OF6PeAlXsSWxd9/FSlWu+ICXuohDfT903cmCd8HFq+bR5hxdk8xP95uMbAuY+eCw0BxbH3O8t+mNTBN6Kbtv6IM24f01ljPFyBB9m3K+1I4mtOZ6chLnDsU3g9efFjp+PNZzTtiEu5JZLf5cvWPUVgX8Yaht1DVTD/DCcoSetD8PZyEaY97CEOp9hhO4lsuGHAmMjHrFefp0YF5TjCA/mhLf8mGfwgp+6H43E1qMvfnjLT93XOOucuu8kpfhepJiIOEL/qpjkm07yRCd5LpHxXnDcxsNaj+GIx9hHU36N5wDhCo8p3aALrWs45zeOTybojYZ16v4mBzd9/l2GN/3vktH+d/3DqfsKP+EPW9/9QfnshM9TK8N7SGECwpDeqfsJD9hgaTNnAmf4MoUxP8Ml65nDL41wYV30+xNmn/Wo/49sMeLIE09W1er1TPe1geX3LhqXPXZJvuH0dtPlwLpo8EvHhwubX7KQcGDbSHaOg72kz08hEWokztCrD3bNis5VIQ1dNM7ZLr/S4oPH+aTRsCb8msGRras+5diOOQV6i/7UxhREWVN7MoI5HiBkUzzvSad1k9i6MTn/Myxf8YvGuR4d2Jv21YgjN5wiM7xGZnjkYLxemnu7/IJOLdL4mjkThkf/LnqmWbvULNNUaiASynWdUE7cqeQzMzCPbN09RZ/Atj7Y3gHFIp3qzG/0oL6G2vw4v8faYKaZW0TXcQxwC/EwD/HH9g9zFvEotdAILwVRXWZWJu3rpLh7i3GkBErKcxpDNcIFW4+AxHSy2tGnf43YpdNpUATIyX+aeCdCJz+0a2thZxx0alMTY5Z00nKXMaIZ5ibld78Th/+lnFLbrRYu4cPhCJ7hcwUXfydVNTlcppXPa2MtbxUG5ycCdq0143nlfiJ7FZTC+sq9kRh1I/skYLHlcrdK0PU2Evg+Y3Xz77OqZNTYycFFGt6kIPndF0SBvsTu9/oZOXOSFd05tfopnnN/JIcpskbj1EJ7AqrFH5j4rrcev1/Ed7fBKYT5dqtV+uz8RaILEJRVeng+/hc8FPNS8gwSfmAuOsZ6ZyvI6SVBP+mmJQhzklooLT6SgA5qkVCF+1TCDHXRtCNAowdv0P2Ce1PvJZ/hG7a2GaxXst1LeLunz39SonFR9MIU3ZM4UiKYpFagC20GNNVTmdKUqdxnkmdGyxRh+He0+lsJd4b2Ky/prJHkByDcCCOeYcRC8rauH5ZBdHmVar+j5Z0Nz8TG7V36eoa9N+hr7DKT6F12vlB7rO5g9Dy9t7Gqx/N2KaXwgdQiOYGoeLk0xwLoNMCmUb0T9PJyXkNlD/oPVQo3u/HMrD5yq486ANE3HpC4IZ8sxcIjYHBr4TUfOVzzGVzi4rC6LsbMzZjaTM80CkK9DpdoUnRXgarUKx9ImAoakmz7m+2O3+Y8YneU6YU+ofFCcHRPKd1zaSzh6fXEwh+85uuFhVEaeNevgOtDG/Tj/iE57tXvoiEH1ma5tKxTq4uyLLOtCM+rsH80/WohN86kFGO1M6XbcnbortW9ophyRYXFdHf5qdViRdaFcUxeu1Vg51KoaTbZnv2H1WJwQSDsLmw0/ILBRd9vL5cXfQxvrjOvk3SSXev7Te4Dl+4VuQa9QE/Ieg/hSnBC3jOl8XgjedsPGtEAUXcQUt8jPtfEKcRqWHYWwYqgu6sP5GLw3257e7/ZamkQGxAM2uNZdJ7v5EJtbV6texUuJLsNn6HDbILYaLQMWVnr9LJBMEHVyiD8YNGBjxrkVPLo50CPfgK0WQFthgXeKqBCH26OKNJNJFX+X696qyqlRYdhKfeg7Kgj7Kh6ufmfNma9GBau1VhypWpFt6ui2yFZipvSGw1ryrFomPZzCuQMpgaMOUKFZzboRaFtxAU3dXMwGzssv+SqKBsuiClOf173mdSVT6sNC7yEZsroZrPc4VPcG58SUhw+1dgppcQrvA0L0eVVLexULexgC9HtuiFVzdXyeu4p91Awv+Do03KKaqNae2WKL0fysAzphqH7J/dI4rx2Uew2XTQaeV9f1PiftvWiVkEtdtV7VFGP3mv2ftXsfWw2Hp/+N5udrjU7LZst/282WxbNNu3tVu3thrXS9U4tDaSiGtFucaoG61EyvWKGkOOdyyS/RDffW7jVC4utcaxneO7wTPb7Bw0fiinKZzUeXcx165q/qroHhltVORaptTEdHnhl+gOajXele1laZh9bDILe1llBl1jmJf7fJsOqTm0DEkmgTBOENOdeSHb3qKpC4HUMBoyM8MFq4scLyXd3T1GF8QMfp1bAyoV9WYPm+rI+ia2zFE+IlgkOoF6dH1bA4Gp99goqaJ16fDNcn0rP8F6UHbymo955KwS5gfiDJlYEm6jxb2giYrscBYm+3/mqLa43Z+tcZVIUJWlFbb59XqRBacCu92cLfor/VtXSijsfEHcuODIRdZ0vo9WtNcX1qsf5tA42V3gbT8F2q9E1w7e4xkrL2fgndHrQMbJDC5vxQvJTq81QEww/LBLrHpoov4g4lloaagHJRpipH3Q7y+WupBUWZuk3PYNejBvs4Y7QZZTeGLzuhZsxO5ms1PL5zeVZNsu3ChUf6uzwoGKHB/uhufvsA3K0Y9ljhpQfSbQPxXjbHo34Kcb+sIyrmp5/0MdPPXYvodeT7imuJT7jgeEZvkX4OMXgWPJ9WufodQ3GruDMvI/lCp7W1oqXfEIre1zt+AewgDOQuNp5CpJWO1TOApdLBPgM3+7truGeQUGWPxW51rFTMc+D7hp2Xkgbe8noTXpzvGpXDk8tLJ6NYO5OJe4sPtR3SPqd/tydS/bDwg8GpQZNHL+Ud2iiD0NKqrkzJrcDxLbOSNLzB7nZsjO8JUpTgRRzEW1rGkohplSHrPSbNvIkQAagZxF/X5c9KApuVgWjxkxnMX3PwiLV/mYq37dPLYrd1664qKXTfom1f6f6hOap4xgyK5B3sdKb2IF3oJd0lXsHwtUjdCbZGW0lBcfB+SxP0nP0h+1ksUOcaytZVGSMi2ai2881un1fo9u3Bd0S0fqaaLHt8Bnea7J9WyfbzyXZvne/6C3Vx/wtvhLqZnrElPYij9l9yl7fHPs5cS8k71ABnwg1teuxsXpV/8DrWtvemfeFXME3en9cjckAPhGHg9fwTrftW71tr3XbFpK/02/RWmu2taXgYT9rBSFl6+y4NlkchLLaxDexgVeICMhl8z7vNBqzPjnLvkNRgcxMrrUeYFNL8JbW1zVipCjvr0b+3J1IvDA+aHkNfGeaYdzweZHzhjYrT60bHEs3mKTfx3c2AoqqA/xBqRC3b1Fn6k6lXmDPa7H4rpdGOJaRY1C5dyU62hUim0Gj+EjtuyeMmZ1anehvbMhuoTkhqQKIw09y0PRDresw6fyqb/xQ6sPuH/AKValXMDY/NaEfZSy2snh/LPXMXwIMKoBBWPLmSPfQYksP/bRvov9R3/wEnxtb6lsweWu6lHDqtwlKla5ZNbx5H5O3f4lJA6ZVgWkZ7dasPsBI2Lp2ZgSzbwQujgFnCsjjH9Lq6Fr+TduWe+1EGB/EwJo6ONWhg0qJBtlTFk4owhRzVC3E62Lemop3auw1smGs7+KRaIo4GaHrPLDtidbrT3jsYP2hXNb/NbCsDqUmZJLwaORGPVkf1ZSMgedtyNqB196G5GwYa0utIwkz9D21YY9UZe/oNckXYQQGlNevHT4zrmGuQbonEn+LNd51oZXPKu4fO9eA7gDLddK5XogquKbzwKgPrS1Vz+QgCmkphvYMbJfy3Fcs0vURP1Mr6tWiidyv2rNftKdRX6Riq+qL1MoVdAPbx+4XXnClv1N8tyq+G5peuOQ+1OaTwDuovjjNtU++Zz45rXLztdBKr9Zvr6xfvHaV1nvcXJxe8yJoadsuWhsdi+XyetecMqba9MuJ6ZMcUM0pJiSaoFe2XJJvGtPd12SdSCebN7yJlq55di00miTVOr4Yazg8sIBHXI1KnqwjX9CpWrybutqG1GSc6lMe+MNNUkBrSTqT/FDQke9D/Fo6NcfBjSl6go4QCXOEiOw3MR5vmiuuhqCr0S3pcMEGVpHIW09Brik+4KVnVCCVFVoYRXcF4Keqlh+oRpjwsIxDZ1TC2FrtbC0Ek0Kqz3fU2oYxa6cY0XRaVMMM7YgcReZEDP2qFu6rDR36HjitYld04dD2Bo5l7Dfjhm3x82FdeHypj98txV+b4q+1tTum/yFs0moMOi1yolOTfAZ+0C3jjIC9XNJa3CQI2h08hIddvyDzi2t6XuojLvodrfAvOZq/XtbuDCMqrLxvE1uZSRMbmssk0tqW4smanfAZGoXoy83O0AyjdFUPBOQMgg0Xhkd/M/vZMNBBbQwEZ8OmDmtzoAJ8a9NDomUcN2hT5LmgU9Q3gqyVx6W1cq67NUIpGJ00I/prLhAt5GQTbW02FzzW1mUz8guoHd1pg7RrwXOUsAXpv9G0rOb+0GJ3kd4EqzkmtCr1ZnWf/FXayx0HIuN7FG8DYWjfil6pyaDVMwa3pee/wmF8Txi5p+azreZ2UtveCebUzo/8wO8EVaC1Xa3ZjyzzYb8xxk/7jXHNfuukZr+ld7QHThDqKyeOUn1JPNym265H5H4HFD9KzfWIcYpWdvSap7VLJ/RFKuaguIAWI4fWJou50NE4TWRshWZ7BLMyXi2SljfYqD5uHzpOYdxnEuAlVXpRRwn7pWO7nQJCPqeFkXFXX7s26g3dSivFTEQ5XVG8XuahaVWjsVZtsbYLe1zblEeYt6nVDOAopUu/FrNZlZIS0iXHblVkcWVyvVq/COuObvO12N0KVHEFrpWA9km8KysrANxf18MhtVThozvV802NKJ8Jaw+vS9+Jo2QmJuHOno3GEhxv+lSrld6Ol3iSLy/cy+eHSXG7QIFx05tFvJODuZpvxpOKJ+aQ21LLeTEOsRnEOMQ8iHGIzQqgGEI/oEVvujNsSoJHoGiPGIeshBiHLGa9QbZqshZT7CK1YrThzMtPTmwm5LzvFbPhLjqIubtOQ1k/l5IzML0Q0rVYYrm0BN9Fhw9F70h0091LMDKr3ZK+KpHs30fyXGZjgTv7dDsxoXkVJ2k0m93cJcslKqJXqxx9G68gniE5JUWfrt17i31R2nqtYSguMJRpDGUaQ9nPMJThAfUahrL/OoZijEw2MIR+q2p6o/uYIqwktxGNjW3oigt0aeoU7jS1soLEYyLxeAOmSCc1Co/Ry3qNh6frt/39bJiV97CqsknCvU4LZRGraihKRLCyO9kdFop89OF29rk3EfEsUmKvMlMuqrj96975bTLfw9uhm35YfHdkdE1xjt8OfXTxrhqNvXRxeSYkXth9M0d5GKWrKzEbmF807Sx2cVLrLkqpY+vXwuGNw5WnhhPB6d5QoEvZYJyGApOTqMu7kOKhj4R/QI8npS+NWJvh7dasSOiUGS4l9gDd02qvpuj1p58S7aMdieO3+2mVJeVOqoXFtO+36eKCAFK8iUnrfvvJcpn0D5bL7i56Dur20+UyJZsHr4/mV/jJ62fLZdZvLZddbkZrXJWg46yUH2i79Vw3tWh8jie1T1AiyN0jvAE4R2dFrQBy9HcTQ15zGJOj0UUKuZHPMQi5+4vgGOP4kLsvBU/sfcjdZybFS0zxB6Z4plMIxS2MLu9dhby2QAge5CQZ564qr/0rYmQt5hnF4JIAcjdVWFZidyBHtzmF+c8D/ILJMsV1gIpqNBA4PiU934mBlaObHXytMXeT+QnWPVG2yf+b4M0H9BENZnL3CP265O4t3keRu28Vl1C7pK7mbqSwT5ZGBMGz7Hgi/EJf8qOphoTqAIyFnUKfdsY/D/rqAbSbo2W0Il9EinwRoTshHnCOoUF7Hy+oJVm+iKKN0lBvXir03OQEuopErc/pHH7pPajPPylWP1fzqXC9Ypyu6DtKzSHl56J+0em95FqKwAzGMdgrKuxVVZi5wLUOQUeVUF7dK/TVvULvZblX8Hel73OoFfz4fsGP61DoiqG1gr+r+wVvZKkXjF5OuLlslXyamOtW3+BthoAO9eG9gtf6kPKrWtJXZdIveI8e4C26Rbrfaum+q7UbXJ9jyscK70JYvztK3y3laWcqK2ahhzHypVLyAE/zKiQK9MHA8ULTYwHH5iT2B8XP5VCQk7Mv5B2iFvE7RryoRfyCEQ9rES+17zaqyLTwcEc/i/KsMB3TNgeGz8sz87QOdk9E4TsHL2QwrtSguDvcaeEJEayo02IsdFq0dk6hCxK6KDMt0vCzhGkavpcrtqJJr0di7rVMVHQ2Q2GieNXivRTRxHwoXt15MhfvpzJbnE8tnF9xHvzwF/NeIbxaa5Elc/jr6a6I7LRq0Z3Qb/+rkxsdFtr11+e3ajKuGVduTmmGMxl3WA7uMJa8LNVwyRHGCU4MqZ5B6GBVMtCWEfq4keSbzhNL28y16dOczkXfzsifHL9Tenl2AnTXCan7SZp6gOKOMjYsvG1bqt9vMZ1g14dWt08TMJ7YZL3CkSspvGoYxCRdPZMmmi/XtFd4gAOVUNqVXqp9tWmXcKQheiG4gvs8vlxmWiUjP9aM/KH+Ia3P38hXTRHKPZG1eULVPPP7jWIeuEHRmRpYIV6RKYkPyr00v2e0V6PQ+pFS0xLYXNA9ETOhxA46iUOXc7q2P/QPWf5+RuPmqHw7Ld+upRaY9U6Q4S+1J3qrlXr04Yg8T3FEnqQrw4jWB6T62YBUfzoge7mYxS6u/l5nk8VMcM3QpOAPUfuRCP4hXa1Y7//7/wE="));if(e){const e=new y([r],{type:t});return u.createObjectURL(e)}return"data:"+t+";base64,"+(e=>{let t="";const r=e.length;let n=0;for(;r>n+2;n+=3){const r=e[n]<<16|e[n+1]<<8|e[n+2];t+=ge[r>>18&63]+ge[r>>12&63]+ge[r>>6&63]+ge[63&r]}const s=r-n;if(1===s){const r=e[n]<<16;t+=ge[r>>18&63]+ge[r>>12&63]+"=="}else if(2===s){const r=e[n]<<16|e[n+1]<<8;t+=ge[r>>18&63]+ge[r>>12&63]+ge[r>>6&63]+"="}return t})(r)}}),e.BlobReader=Fr,e.BlobWriter=kr,e.Data64URIReader=class extends Sr{constructor(e){super();let t=e.length;for(;"="==e.charAt(t-1);)t--;const n=e.indexOf(",")+1;r.assign(this,{dataURI:e,ht:n,size:i.floor(.75*(t-n))})}readUint8Array(e,t){const{ht:r,dataURI:n}=this,s=new f(t),a=4*i.floor(e/3),o=atob(n.substring(a+r,4*i.ceil((e+t)/3)+r)),c=e-3*i.floor(a/4);let l=0;for(let e=c;c+t>e&&e<o.length;e++)s[e-c]=o.charCodeAt(e),l++;return l<s.length?s.subarray(0,l):s}},e.Data64URIWriter=class extends zr{constructor(e){super(),r.assign(this,{data:"data:"+(e||"")+";base64,",pending:[]})}writeUint8Array(e){const t=this;let r,s=t.pending;const a=t.pending.length;for(t.pending="",r=0;r<3*i.floor((a+e.length)/3)-a;r++)s+=n.fromCharCode(e[r]);for(;r<e.length;r++)t.pending+=n.fromCharCode(e[r]);s.length>2?t.data+=F(s):t.pending=s+t.pending}getData(){return this.data+F(this.pending)}},e.ERR_AMBIGUOUS_ARCHIVE=_n,e.ERR_BAD_FORMAT=Rn,e.ERR_CENTRAL_DIRECTORY_NOT_FOUND=Xn,e.ERR_DUPLICATED_NAME=Cs,e.ERR_ENCRYPTED=jn,e.ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND=Ln,e.ERR_EOCDR_NOT_FOUND=Gn,e.ERR_EXTRAFIELD_ZIP64_NOT_FOUND=Zn,e.ERR_HTTP_RANGE=wr,e.ERR_INVALID_COMMENT=Ts,e.ERR_INVALID_COMPRESSED_DATA=vt,e.ERR_INVALID_ENCRYPTION_STRENGTH=Us,e.ERR_INVALID_ENTRY_COMMENT=Vs,e.ERR_INVALID_ENTRY_NAME=qs,e.ERR_INVALID_EXTRAFIELD_DATA=Ws,e.ERR_INVALID_EXTRAFIELD_TYPE=Hs,e.ERR_INVALID_PASSWORD=Ie,e.ERR_INVALID_SIGNATURE=Me,e.ERR_INVALID_UNCOMPRESSED_SIZE=kt,e.ERR_INVALID_VERSION=Ds,e.ERR_ITERATOR_COMPLETED_TOO_SOON=fr,e.ERR_LOCAL_FILE_HEADER_NOT_FOUND=On,e.ERR_OVERLAPPING_ENTRY=Qn,e.ERR_SPLIT_ZIP_FILE=Bn,e.ERR_UNDEFINED_READER=Ks,e.ERR_UNDEFINED_UNCOMPRESSED_SIZE=As,e.ERR_UNSUPPORTED_COMPRESSION=Jn,e.ERR_UNSUPPORTED_ENCRYPTION=Yn,e.ERR_UNSUPPORTED_FORMAT=Ms,e.ERR_WRITER_NOT_INITIALIZED=pr,e.ERR_ZIP_NOT_EMPTY=Rs,e.HttpRangeReader=class extends Mr{constructor(e,t={}){super(e,r.assign({},t,{useRangeHeader:!0}))}},e.HttpReader=Mr,e.Reader=Sr,e.SplitDataReader=Ar,e.SplitDataWriter=Kr,e.TextReader=class extends Fr{constructor(e){super(new y([e],{type:"text/plain"}))}},e.TextWriter=class extends kr{constructor(e){super(e),r.assign(this,{encoding:e,yt:!e||"utf-8"==e.toLowerCase()})}async getData(){const{encoding:e,yt:t}=this,n=await super.getData();if(n.text&&t)return n.text();{const t=new FileReader;return new b((s,a)=>{r.assign(t,{onload:({target:e})=>s(e.result),onerror:()=>a(t.error)}),t.readAsText(n,e)})}}},e.Uint8ArrayReader=class extends Sr{constructor(e){super(),e=new f(e.buffer,e.byteOffset,e.byteLength),r.assign(this,{array:e,size:e.length})}readUint8Array(e,t){return this.array.slice(e,e+t)}},e.Uint8ArrayWriter=class extends zr{constructor(e){super(),this.defaultBufferSize=e||262144}init(e=0){r.assign(this,{offset:0,array:new f(e>0?e:this.defaultBufferSize)}),super.init()}writeUint8Array(e){const t=this,r=t.offset+e.length;if(r>t.array.length){let e=t.array.length?2*t.array.length:t.defaultBufferSize;for(;r>e;)e*=2;const n=t.array;t.array=new f(e),t.array.set(n)}t.array.set(e,t.offset),t.offset+=e.length}getData(){return this.offset===this.array.length?this.array:this.array.slice(0,this.offset)}},e.Writer=zr,e.ZipReader=ns,e.ZipReaderStream=class{constructor(e={}){const{readable:t,writable:r}=new k,n=new ns(t,e).getEntriesGenerator();this.readable=new v({async pull(e){const{done:t,value:r}=await n.next();if(t)return e.close();const s={...r,readable:(()=>{const{readable:e,writable:t}=new k;if(r.getData)return(async()=>{try{await r.getData(t)}catch(e){try{await t.abort(e)}catch{}}})(),e})()};delete s.getData,e.enqueue(s)}}),this.writable=r}},e.ZipWriter=js,e.ZipWriterStream=class{constructor(e={}){const{readable:t,writable:r}=new k;this.readable=t,this.zipWriter=new js(r,e),this.We=new l}transform(e){const t=this.zipWriter;let r;const{readable:n,writable:s}=new k({start(e){r=e},flush:()=>{(async()=>{try{await t.close()}catch(e){try{await t.writer.writable.abort(e)}catch{}}})()}});return Ys(this,this.zipWriter.add(e,n),e=>r.error(e)),{readable:this.readable,writable:s}}writable(e){let t;const{readable:r,writable:n}=new k({start(e){t=e}});return Ys(this,this.zipWriter.add(e,r),e=>t.error(e)),n}async close(e,r={}){return await b.all(t.from(this.We)),this.zipWriter.close(e,r)}},e.configure=de,e.createOPFSTempStream=(e={})=>{const{thresholdBytes:t=pa,directoryName:r=ha,getDirectory:n=()=>T.storage.getDirectory()}=e;let s;function a(){return s||(s=b.resolve(n()).then(e=>e.getDirectoryHandle(r,{create:!0}))),s}return()=>{const e=[];let r,n,s,i,o=0,c=!1;const l=new E({async write(i){c?await s.write(i):(e.push(i),o+=i.length,o>t&&await(async()=>{const t=await a();r=z.randomUUID(),n=await t.getFileHandle(r,{create:!0}),s=(await n.createWritable()).getWriter(),c=!0;for(const t of e)await s.write(t);e.length=0})())},async close(){s&&(await s.close(),s=null)}});let d=0;return{writable:l,readable:new v({async pull(t){if(c){if(!i){const e=await n.getFile();i=e.stream().getReader()}const{value:e,done:r}=await i.read();r?t.close():t.enqueue(e)}else d<e.length?t.enqueue(e[d++]):t.close()},async cancel(e){i&&await i.cancel(e)}},{highWaterMark:0}),dispose:async()=>{if(s){try{await s.close()}catch{}s=null}if(r){try{const e=await a();await e.removeEntry(r)}catch{}n=r=null}e.length=0}}}},e.getMimeType=()=>"application/octet-stream",e.terminateWorkers=async()=>{await b.allSettled(er.map(e=>(dr(e),e.terminate())))}});
|
package/dist/zip-module.wasm
CHANGED
|
Binary file
|