@zip.js/zip.js 2.8.28 → 2.8.29

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.
@@ -2527,14 +2527,15 @@
2527
2527
  function pipeThroughCommpressionStream(readable, useCompressionStream, options, CompressionStreamNative, CompressionStreamZlib, CompressionStream) {
2528
2528
  const Stream = useCompressionStream && CompressionStreamNative ? CompressionStreamNative : CompressionStreamZlib || CompressionStream;
2529
2529
  const format = options.deflate64 ? FORMAT_DEFLATE64_RAW : FORMAT_DEFLATE_RAW;
2530
+ let codecStream;
2530
2531
  try {
2531
- readable = pipeThrough(readable, new Stream(format, options));
2532
+ codecStream = new Stream(format, options);
2532
2533
  } catch (error) {
2533
2534
  if (useCompressionStream) {
2534
2535
  if (CompressionStreamZlib) {
2535
- readable = pipeThrough(readable, new CompressionStreamZlib(format, options));
2536
+ codecStream = new CompressionStreamZlib(format, options);
2536
2537
  } else if (CompressionStream) {
2537
- readable = pipeThrough(readable, new CompressionStream(format, options));
2538
+ codecStream = new CompressionStream(format, options);
2538
2539
  } else {
2539
2540
  throw error;
2540
2541
  }
@@ -2542,13 +2543,62 @@
2542
2543
  throw error;
2543
2544
  }
2544
2545
  }
2545
- return readable;
2546
+ // The native CompressionStream/DecompressionStream and the pure-JS zlib port do not signal
2547
+ // backpressure on their writable side (their `ready` never pends), so a plain pipeThrough drains
2548
+ // the whole source into them and peak memory grows with the entry size. Awaiting each write()
2549
+ // paces the source to the codec's consumption rate, keeping streaming memory bounded. The WASM
2550
+ // codec already backpressures, so this is a no-op cost for it.
2551
+ return pipeThroughBackpressured(readable, codecStream);
2546
2552
  }
2547
2553
 
2548
2554
  function pipeThrough(readable, transformStream) {
2549
2555
  return readable.pipeThrough(transformStream);
2550
2556
  }
2551
2557
 
2558
+ // Like readable.pipeThrough(transformStream), but drives the writable side manually and awaits each
2559
+ // write() so that a codec which under-reports backpressure cannot pull the whole source into memory.
2560
+ // Errors propagate in both directions: a source error aborts the codec; a downstream cancel/error
2561
+ // (surfaced through the codec's writable rejecting) cancels the source.
2562
+ function pipeThroughBackpressured(readable, transformStream) {
2563
+ const writer = transformStream.writable.getWriter();
2564
+ const reader = readable.getReader();
2565
+ pump();
2566
+ return transformStream.readable;
2567
+
2568
+ async function pump() {
2569
+ try {
2570
+ for (; ;) {
2571
+ await writer.ready;
2572
+ const result = await reader.read();
2573
+ if (result.done) {
2574
+ await writer.close();
2575
+ break;
2576
+ }
2577
+ await writer.write(result.value);
2578
+ }
2579
+ } catch (error) {
2580
+ await abort(writer, error);
2581
+ await cancel(reader, error);
2582
+ }
2583
+ }
2584
+ }
2585
+
2586
+ async function abort(writer, error) {
2587
+ try {
2588
+ await writer.abort(error);
2589
+ } catch {
2590
+ // the writable may already be errored/closed
2591
+ }
2592
+ }
2593
+
2594
+ async function cancel(reader, error) {
2595
+ try {
2596
+ await reader.cancel(error);
2597
+ } catch {
2598
+ // the readable may already be errored/closed
2599
+ }
2600
+ }
2601
+
2552
2602
  // DecompressionStream implementations can fail with a message-less TypeError on malformed
2553
2603
  // input; give these errors an identifiable message (errors raised by the other stages of
2554
2604
  // the pipeline, e.g. ERR_INVALID_PASSWORD, always carry a message and pass through as-is)
@@ -2876,7 +2926,15 @@
2876
2926
  try {
2877
2927
  await initModule(config);
2878
2928
  } catch {
2879
- options.useCompressionStream = true;
2929
+ // The WASM module failed to load. Fall back to the native CompressionStream only if the
2930
+ // zlib codec that would otherwise run depends on that module; a self-contained codec
2931
+ // supplied through config (e.g. the pure-JS port) stays usable and is kept as requested.
2932
+ const ZlibStream = options.codecType.startsWith(CODEC_DEFLATE) ?
2933
+ config.CompressionStreamZlib :
2934
+ config.DecompressionStreamZlib;
2935
+ if (!ZlibStream || ZlibStream.requiresModule) {
2936
+ options.useCompressionStream = true;
2937
+ }
2880
2938
  }
2881
2939
  }
2882
2940
  codecStream = new CodecStream(options, config);
@@ -1 +1 @@
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).zip={})})(this,function(e){"use strict";const{Array:t,Object:r,String:s,Number:n,BigInt:a,Math:i,Date:o,Map:c,Set:l,Response:d,URL:u,Error:p,Uint8Array:f,Uint16Array:h,Uint32Array:w,DataView:m,Blob:g,Promise:y,TextEncoder:b,TextDecoder:z,document:S,crypto:x,btoa:F,TransformStream:k,ReadableStream:D,WritableStream:v,CompressionStream:E,DecompressionStream:A,navigator:R,Worker:T}="undefined"!=typeof globalThis?globalThis:this||self,U=4294967295,C=65535,M=255,W=67324752,O=134695760,_=O,N=33639248,B=101010256,L=101075792,I=117853008,P=22,H=21589,Z=2048,V=16384,q=2048,K=1024,j="/",X=30,G=new o(2107,11,31),Y=new o(1980,0,1),J=void 0,Q=1/0,$="undefined",ee="function";let te=2;try{typeof R!=$&&R.hardwareConcurrency&&(te=R.hardwareConcurrency)}catch{}const re={workerURI:"./core/web-worker-wasm.js",wasmURI:"./core/streams/zlib-wasm/zlib-streams.wasm",chunkSize:65536,maxWorkers:te,terminateWorkerTimeout:5e3,workerStarvationTimeout:5e3,useWebWorkers:!0,useCompressionStream:!0,CompressionStream:typeof E!=$&&E,DecompressionStream:typeof A!=$&&A},se=r.assign({},re);function ne(){return se}function ae(e){return i.max(e.chunkSize,64)}const ie="HTTP error ",oe="HTTP Range not supported",ce="Content-Range",le="Range",de="GET",ue="bytes",pe=65536,fe="writable";class he{constructor(){this.size=0}init(){this.initialized=!0}}class we extends he{get readable(){const e=this,{chunkSize:t=pe}=e,r=new D({start(){this.chunkOffset=0},async pull(s){const{offset:n=0,size:a,diskNumberStart:o}=r,{chunkOffset:c}=this,l=a===J?t:i.min(t,a-c),d=await Ve(e,n+c,l,o);s.enqueue(d),c+t>a||a===J&&!d.length&&l?s.close():this.chunkOffset+=t}});return r}}class me extends he{constructor(){super();const e=this,t=new v({write(t){if(!e.initialized)throw new p("Writer not initialized");return e.writeUint8Array(t)}});r.defineProperty(e,fe,{get:()=>t})}writeUint8Array(){}}class ge extends we{constructor(e){super();let t=e.length;for(;"="==e.charAt(t-1);)t--;const s=e.indexOf(",")+1;r.assign(this,{dataURI:e,dataStart:s,size:i.floor(.75*(t-s))})}readUint8Array(e,t){const{dataStart:r,dataURI:s}=this,n=new f(t),a=4*i.floor(e/3),o=atob(s.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++)n[e-c]=o.charCodeAt(e),l++;return l<n.length?n.subarray(0,l):n}}class ye extends me{constructor(e){super(),r.assign(this,{data:"data:"+(e||"")+";base64,",pending:[]})}writeUint8Array(e){const t=this;let r,n=t.pending;const a=t.pending.length;for(t.pending="",r=0;r<3*i.floor((a+e.length)/3)-a;r++)n+=s.fromCharCode(e[r]);for(;r<e.length;r++)t.pending+=s.fromCharCode(e[r]);n.length>2?t.data+=F(n):t.pending=n+t.pending}getData(){return this.data+F(this.pending)}}class be extends we{constructor(e){super(),r.assign(this,{blob:e,size:e.size})}async readUint8Array(e,t){const r=this,s=e+t,n=e||s<r.size?r.blob.slice(e,s):r.blob;let a=await n.arrayBuffer();return a.byteLength>t&&(a=a.slice(e,s)),new f(a)}}class ze extends he{constructor(e){super();const t=this,s=new k,n=[];e&&n.push(["Content-Type",e]),r.defineProperty(t,fe,{get:()=>s.writable}),t.blob=new d(s.readable,{headers:n}).blob(),t.blob.catch(()=>{})}getData(){return this.blob}}class Se extends be{constructor(e){super(new g([e],{type:"text/plain"}))}}class xe extends ze{constructor(e){super(e),r.assign(this,{encoding:e,utf8:!e||"utf-8"==e.toLowerCase()})}async getData(){const{encoding:e,utf8:t}=this,s=await super.getData();if(s.text&&t)return s.text();{const t=new FileReader;return new y((n,a)=>{r.assign(t,{onload:({target:e})=>n(e.result),onerror:()=>a(t.error)}),t.readAsText(s,e)})}}}class Fe extends we{constructor(e,t){super(),De(this,e,t)}async init(){await ve(this,We,Te),super.init()}readUint8Array(e,t){return Ee(this,e,t,We,Te)}}class ke extends we{constructor(e,t){super(),De(this,e,t)}async init(){await ve(this,Oe,Ue),super.init()}readUint8Array(e,t){return Ee(this,e,t,Oe,Ue)}}function De(e,t,s){const{preventHeadRequest:n,useRangeHeader:a,forceRangeRequests:i,combineSizeEocd:o,fetch:c}=s;delete(s=r.assign({},s)).preventHeadRequest,delete s.useRangeHeader,delete s.forceRangeRequests,delete s.combineSizeEocd,delete s.useXHR,delete s.fetch,r.assign(e,{url:t,options:s,preventHeadRequest:n,useRangeHeader:a,forceRangeRequests:i,combineSizeEocd:o,fetch:c})}async function ve(e,t,r){const{url:s,preventHeadRequest:a,useRangeHeader:i,forceRangeRequests:o,combineSizeEocd:c}=e;if((e=>{const{baseURI:t}=ne(),{protocol:r}=new u(e,t);return"http:"==r||"https:"==r})(s)&&(i||o)&&(void 0===a||a)){const s=await t(de,e,Ae(e,c?-22:void 0)),a=s.headers.get("Accept-Ranges");if(!(o||a&&a.toLowerCase()==ue))throw new p(oe);{if(c){const t=new f(await s.arrayBuffer());206==s.status&&t.length==P&&(e.eocdCache=t)}let a;const i=s.headers.get(ce);if(i){const e=i.trim().split(/\s*\/\s*/);if(e.length){const t=e[1];t&&"*"!=t&&(a=n(t))}}a===J?await Me(e,t,r):e.size=a}}else await Me(e,t,r)}async function Ee(e,t,r,s,a){const{useRangeHeader:i,forceRangeRequests:o,eocdCache:c,size:l,options:d}=e;if(i||o){if(c&&t==l-P&&r==P)return c;if(l>t&&0!==r){t+r>l&&(r=l-t);const a=await s(de,e,Ae(e,t,r));if(206!=a.status)throw new p(oe);const i=a.headers.get(ce);if(i){const e=n(i.trim().split(/[\s-]+/)[1]);if(!n.isNaN(e)&&e!=t)throw new p(oe)}const o=new f(await a.arrayBuffer());if(o.length!=r)throw new p(oe);return o}return new f}{const{data:s}=e;return s||await a(e,d),new f(e.data.subarray(t,t+r))}}function Ae(e,t=0,s=1){return r.assign({},Re(e),{[le]:ue+"="+(0>t?t:t+"-"+(t+s-1))})}function Re({options:e}){const{headers:t}=e;if(t)return Symbol.iterator in t?r.fromEntries(t):t}async function Te(e){await Ce(e,We)}async function Ue(e){await Ce(e,Oe)}async function Ce(e,t){const r=await t(de,e,Re(e));e.data=new f(await r.arrayBuffer()),e.size=e.data.length}async function Me(e,t,r){if(e.preventHeadRequest)await r(e,e.options);else{const s=await t("HEAD",e,Re(e)),a=s.headers.get("Content-Length");a&&!s.headers.get("Content-Encoding")?e.size=n(a):await r(e,e.options)}}async function We(e,{fetch:t=fetch,options:s,url:n},a){const i=await t(n,r.assign({},s,{method:e,headers:a}));if(400>i.status)return i;throw 416==i.status?new p(oe):new p(ie+(i.statusText||i.status))}function Oe(e,{url:t},s){return new y((n,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)}),n({status:i.status,arrayBuffer:()=>i.response,headers:new c(e)})}else a(416==i.status?new p(oe):new p(ie+(i.statusText||i.status)))},!1),i.addEventListener("error",e=>a(e.detail?e.detail.error:new p("Network error")),!1),i.open(e,t),s)for(const e of r.entries(s))i.setRequestHeader(e[0],e[1]);i.responseType="arraybuffer",i.send()})}class _e extends we{constructor(e,t={}){super(),r.assign(this,{url:e,reader:t.useXHR&&!t.fetch?new ke(e,t):new Fe(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 Ne extends we{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)}}class Be extends me{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 s=t.array;t.array=new f(e),t.array.set(s)}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)}}class Le extends we{constructor(e){super(),this.readers=e}async init(){const e=this,{readers:t}=e;e.lastDiskNumber=0,e.lastDiskOffset=0,await y.all(t.map(async(r,s)=>{await Ze(r),s!=t.length-1&&(e.lastDiskOffset+=r.size),e.size+=r.size})),super.init()}async readUint8Array(e,t,r=0){const s=this,{readers:n}=this;let a,o=r;-1==o&&(o=n.length-1);let c=e;for(;n[o]&&c>=n[o].size;)c-=n[o].size,o++;const l=n[o];if(l){const n=l.size;if(c+t>n){const i=n-c;a=new f(t);const o=await Ve(l,c,i);a.set(o,0);const d=await s.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 Ve(l,c,t)}else a=new f;return s.lastDiskNumber=i.max(o,s.lastDiskNumber),a}}class Ie extends he{constructor(e,t=4294967295){super();const s=this;let n,a,i;r.assign(s,{diskNumber:0,diskOffset:0,size:0,maxSize:t,availableSize:t});const o=new v({async write(t){const{availableSize:r}=s;if(i)t.length<r?await c(t):(await c(t.subarray(0,r)),await l(),s.diskOffset+=n.size,s.diskNumber++,i=null,s.availableSize=s.maxSize,t.length>r&&await this.write(t.subarray(r)));else{const{value:r,done:o}=await e.next();if(o&&!r)throw new p("Writer iterator completed too soon");n=r,n.size=0,n.maxSize&&(s.maxSize=n.maxSize),s.availableSize=s.maxSize,await Ze(n),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),n.size+=t,s.availableSize-=t)}async function l(){await i.close()}r.defineProperty(s,fe,{get:()=>o})}}class Pe{constructor(e){return t.isArray(e)&&(e=new Le(e)),e instanceof D&&(e={readable:e}),e}}class He{constructor(e){return e.writable===J&&typeof e.next==ee&&(e=new Ie(e)),e instanceof v&&(e={writable:e}),e.size===J&&(e.size=0),e instanceof Ie||r.assign(e,{diskNumber:0,diskOffset:0,availableSize:Q,maxSize:Q}),e}}async function Ze(e,t){if(!e.init||e.initialized)return y.resolve();await e.init(t)}function Ve(e,t,r,s){return e.readUint8Array(t,r,s)}const qe=[];for(let e=0;256>e;e++){let t=e;for(let e=0;8>e;e++)1&t?t=t>>>1^3988292384:t>>>=1;qe[e]=t}class Ke{constructor(e){this.crc=e||-1}append(e){let t=0|this.crc;for(let r=0,s=0|e.length;s>r;r++)t=t>>>8^qe[255&(t^e[r])];this.crc=t}get(){return~this.crc}}class je extends k{constructor(){let e;const t=new Ke;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 Xe(e){if(typeof b==$){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 b).encode(e)}const Ge={concat(e,t){if(0===e.length||0===t.length)return e.concat(t);const r=e[e.length-1],s=Ge.getPartial(r);return 32===s?e.concat(t):Ge._shiftRight(t,s,0|r,e.slice(0,e.length-1))},bitLength(e){const t=e.length;if(0===t)return 0;const r=e[t-1];return 32*(t-1)+Ge.getPartial(r)},clamp(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]=Ge.partial(t,e[r-1]&2147483648>>t-1,1)),e},partial:(e,t,r)=>32===e?t:(r?0|t:t<<32-e)+1099511627776*e,getPartial:e=>i.round(e/1099511627776)||32,_shiftRight(e,t,r,s){for(void 0===s&&(s=[]);t>=32;t-=32)s.push(r),r=0;if(0===t)return s.concat(e);for(let n=0;n<e.length;n++)s.push(r|e[n]>>>t),r=e[n]<<32-t;const n=e.length?e[e.length-1]:0,a=Ge.getPartial(n);return s.push(Ge.partial(t+a&31,t+a>32?r:s.pop(),1)),s}},Ye={bytes:{fromBits(e){const t=Ge.bitLength(e)/8,r=new f(t);let s;for(let n=0;t>n;n++)3&n||(s=e[n/4]),r[n]=s>>>24,s<<=8;return r},toBits(e){const t=[];let r,s=0;for(r=0;r<e.length;r++)s=s<<8|e[r],3&~r||(t.push(s),s=0);return 3&r&&t.push(Ge.partial(8*(3&r),s)),t}}},Je=class{constructor(e){const t=this;t.blockSize=512,t._init=[1732584193,4023233417,2562383102,271733878,3285377520],t._key=[1518500249,1859775393,2400959708,3395469782],e?(t._h=e._h.slice(0),t._buffer=e._buffer.slice(0),t._length=e._length):t.reset()}reset(){const e=this;return e._h=e._init.slice(0),e._buffer=[],e._length=0,e}update(e){const t=this;"string"==typeof e&&(e=Ye.utf8String.toBits(e));const r=t._buffer=Ge.concat(t._buffer,e),s=t._length,n=t._length=s+Ge.bitLength(e);if(n>9007199254740991)throw new p("Cannot hash more than 2^53 - 1 bits");const a=new w(r);let i=0;for(let e=t.blockSize+s-(t.blockSize+s&t.blockSize-1);n>=e;e+=t.blockSize)t._block(a.subarray(16*i,16*(i+1))),i+=1;return r.splice(0,16*i),t}finalize(){const e=this;let t=e._buffer;const r=e._h;t=Ge.concat(t,[Ge.partial(1,1)]);for(let e=t.length+2;15&e;e++)t.push(0);for(t.push(i.floor(e._length/4294967296)),t.push(0|e._length);t.length;)e._block(t.splice(0,16));return e.reset(),r}_f(e,t,r,s){return e>19?e>39?e>59?e>79?void 0:t^r^s:t&r|t&s|r&s:t^r^s:t&r|~t&s}_S(e,t){return t<<e|t>>>32-e}_block(e){const r=this,s=r._h,n=t(80);for(let t=0;16>t;t++)n[t]=e[t];let a=s[0],o=s[1],c=s[2],l=s[3],d=s[4];for(let e=0;79>=e;e++){16>e||(n[e]=r._S(1,n[e-3]^n[e-8]^n[e-14]^n[e-16]));const t=r._S(5,a)+r._f(e,o,c,l)+d+n[e]+r._key[i.floor(e/20)]|0;d=l,l=c,c=r._S(30,o),o=a,a=t}s[0]=s[0]+a|0,s[1]=s[1]+o|0,s[2]=s[2]+c|0,s[3]=s[3]+l|0,s[4]=s[4]+d|0}},Qe={importKey:e=>new Qe.hmacSha1(Ye.bytes.toBits(e)),pbkdf2(e,t,r,s){if(r=r||1e4,0>s||0>r)throw new p("invalid params to pbkdf2");const n=1+(s>>5)<<2;let a,i,o,c,l;const d=new ArrayBuffer(n),u=new m(d);let f=0;const h=Ge;for(t=Ye.bytes.toBits(t),l=1;(n||1)>f;l++){for(a=i=e.encrypt(h.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;(n||1)>f&&o<a.length;o++)u.setInt32(f,a[o]),f+=4}return d.slice(0,s/8)},hmacSha1:class{constructor(e){const t=this,r=t._hash=Je,s=[[],[]];t._baseHash=[new r,new r];const n=t._baseHash[0].blockSize/32;e.length>n&&(e=(new r).update(e).finalize());for(let t=0;n>t;t++)s[0][t]=909522486^e[t],s[1][t]=1549556828^e[t];t._baseHash[0].update(s[0]),t._baseHash[1].update(s[1]),t._resultHash=new r(t._baseHash[0])}reset(){const e=this;e._resultHash=new e._hash(e._baseHash[0]),e._updated=!1}update(e){this._updated=!0,this._resultHash.update(e)}digest(){const e=this,t=e._resultHash.finalize(),r=new e._hash(e._baseHash[1]).update(t).finalize();return e.reset(),r}encrypt(e){if(this._updated)throw new p("encrypt on already updated hmac called!");return this.update(e),this.digest(e)}}},$e=typeof x!=$&&typeof x.getRandomValues==ee,et="Invalid password",tt="Invalid signature",rt="zipjs-abort-check-password";function st(e){if($e)return x.getRandomValues(e);throw new p("Crypto API not supported")}const nt=16,at={name:"PBKDF2"},it=r.assign({hash:{name:"HMAC"}},at),ot=r.assign({iterations:1e3,hash:{name:"SHA-1"}},at),ct=["deriveBits"],lt=[8,12,16],dt=[16,24,32],ut=10,pt=[0,0,0,0],ft=typeof x!=$,ht=ft&&x.subtle,wt=ft&&typeof ht!=$,mt=Ye.bytes,gt=class{constructor(e){const t=this;t._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],t._tables[0][0][0]||t._precompute();const r=t._tables[0][4],s=t._tables[1],n=e.length;let a,i,o,c=1;if(4!==n&&6!==n&&8!==n)throw new p("invalid aes key size");for(t._key=[i=e.slice(0),o=[]],a=n;4*n+28>a;a++){let e=i[a-1];(a%n===0||8===n&&a%n===4)&&(e=r[e>>>24]<<24^r[e>>16&255]<<16^r[e>>8&255]<<8^r[255&e],a%n===0&&(e=e<<8^e>>>24^c<<24,c=c<<1^283*(c>>7))),i[a]=i[a-n]^e}for(let e=0;a;e++,a--){const t=i[3&e?a:a-4];o[e]=4>=a||4>e?t:s[0][r[t>>>24]]^s[1][r[t>>16&255]]^s[2][r[t>>8&255]]^s[3][r[255&t]]}}encrypt(e){return this._crypt(e,0)}decrypt(e){return this._crypt(e,1)}_precompute(){const e=this._tables[0],t=this._tables[1],r=e[4],s=t[4],n=[],a=[];let i,o,c,l;for(let e=0;256>e;e++)a[(n[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,s[a]=d,l=n[c=n[o=n[d]]];let u=16843009*l^65537*c^257*o^16843008*d,p=257*n[a]^16843008*a;for(let r=0;4>r;r++)e[r][d]=p=p<<24^p>>>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)}_crypt(e,t){if(4!==e.length)throw new p("invalid aes block size");const r=this._key[t],s=r.length/4-2,n=[0,0,0,0],a=this._tables[t],i=a[0],o=a[1],c=a[2],l=a[3],d=a[4];let u,f,h,w=e[0]^r[0],m=e[t?3:1]^r[1],g=e[2]^r[2],y=e[t?1:3]^r[3],b=4;for(let e=0;s>e;e++)u=i[w>>>24]^o[m>>16&255]^c[g>>8&255]^l[255&y]^r[b],f=i[m>>>24]^o[g>>16&255]^c[y>>8&255]^l[255&w]^r[b+1],h=i[g>>>24]^o[y>>16&255]^c[w>>8&255]^l[255&m]^r[b+2],y=i[y>>>24]^o[w>>16&255]^c[m>>8&255]^l[255&g]^r[b+3],b+=4,w=u,m=f,g=h;for(let e=0;4>e;e++)n[t?3&-e:e]=d[w>>>24]<<24^d[m>>16&255]<<16^d[g>>8&255]<<8^d[255&y]^r[b++],u=w,w=m,m=g,g=y,y=u;return n}},yt=class{constructor(e,t){this._prf=e,this._initIv=t,this._iv=t}reset(){this._iv=this._initIv}update(e){return this.calculate(this._prf,e,this._iv)}incWord(e){if(255&~(e>>24))e+=1<<24;else{let t=e>>16&255,r=e>>8&255,s=255&e;255===t?(t=0,255===r?(r=0,255===s?s=0:++s):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=s}return e}incCounter(e){0===(e[0]=this.incWord(e[0]))&&(e[1]=this.incWord(e[1]))}calculate(e,t,r){let s;if(!(s=t.length))return[];const n=Ge.bitLength(t);for(let n=0;s>n;n+=4){this.incCounter(r);const s=e.encrypt(r);t[n]^=s[0],t[n+1]^=s[1],t[n+2]^=s[2],t[n+3]^=s[3]}return Ge.clamp(t,n)}},bt=Qe.hmacSha1;let zt=ft&&wt&&typeof ht.importKey==ee,St=ft&&wt&&typeof ht.deriveBits==ee;class xt extends k{constructor({password:e,rawPassword:t,encryptionStrength:s,checkPasswordOnly:n}){super({start(){r.assign(this,{ready:new y(e=>this.resolveReady=e),password:vt(e,t),strength:s-1,pending:new f})},async transform(e,t){const r=this,{password:s,strength:a,resolveReady:i,ready:o}=r;s?(await(async(e,t,r,s)=>{const n=await Dt(e,t,r,At(s,0,lt[t])),a=At(s,lt[t]);if(n[0]!=a[0]||n[1]!=a[1])throw new p(et)})(r,a,s,At(e,0,lt[a]+2)),e=At(e,lt[a]+2),n?t.error(new p(rt)):i()):await o;const c=new f(e.length-ut-(e.length-ut)%nt);t.enqueue(kt(r,e,c,0,ut,!0))},async flush(e){const{ctr:t,hmac:r,pending:s,ready:n}=this;if(r&&t){await n;const a=At(s,0,s.length-ut),i=At(s,s.length-ut);let o=new f;if(a.length){const e=Tt(mt,a);r.update(e);const s=t.update(e);o=Rt(mt,s)}const c=At(Rt(mt,r.digest()),0,ut);let l=s.length<ut?1:0;for(let e=0;ut>e;e++)l|=c[e]^i[e];if(l)throw new p(tt);e.enqueue(o)}}})}}class Ft extends k{constructor({password:e,rawPassword:t,encryptionStrength:s}){let n;super({start(){r.assign(this,{ready:new y(e=>this.resolveReady=e),password:vt(e,t),strength:s-1,pending:new f})},async transform(e,t){const r=this,{password:s,strength:n,resolveReady:a,ready:i}=r;let o=new f;s?(o=await(async(e,t,r)=>{const s=st(new f(lt[t]));return Et(s,await Dt(e,t,r,s))})(r,n,s),a()):await i;const c=new f(o.length+e.length-e.length%nt);c.set(o,0),t.enqueue(kt(r,e,c,o.length,0))},async flush(e){const{ctr:t,hmac:r,pending:s,ready:a}=this;if(r&&t){await a;let i=new f;if(s.length){const e=t.update(Tt(mt,s));r.update(e),i=Rt(mt,e)}n.signature=Rt(mt,r.digest()).slice(0,ut),e.enqueue(Et(i,n.signature))}}}),n=this}}function kt(e,t,r,s,n,a){const{ctr:i,hmac:o,pending:c}=e;c.length&&(t=Et(c,t));const l=t.length-n;let d;for(r=((e,t)=>{if(t&&t>e.length){const r=e;(e=new f(t)).set(r,0)}return e})(r,s+(l-l%nt)),d=0;l-nt>=d;d+=nt){const e=Tt(mt,At(t,d,d+nt));a&&o.update(e);const n=i.update(e);a||o.update(n),r.set(Rt(mt,n),d+s)}return e.pending=At(t,d),r}async function Dt(e,s,n,a){e.password=null;const i=await(async(e,t,r,s,n)=>{if(!zt)return Qe.importKey(t);try{return await ht.importKey("raw",t,r,!1,n)}catch{return zt=!1,Qe.importKey(t)}})(0,n,it,0,ct),o=await(async(e,t,r)=>{if(!St)return Qe.pbkdf2(t,e.salt,ot.iterations,r);try{return await ht.deriveBits(e,t,r)}catch{return St=!1,Qe.pbkdf2(t,e.salt,ot.iterations,r)}})(r.assign({salt:a},ot),i,8*(2*dt[s]+2)),c=new f(o),l=Tt(mt,At(c,0,dt[s])),d=Tt(mt,At(c,dt[s],2*dt[s])),u=At(c,2*dt[s]);return r.assign(e,{keys:{key:l,authentication:d,passwordVerification:u},ctr:new yt(new gt(l),t.from(pt)),hmac:new bt(d)}),u}function vt(e,t){return t===J?Xe(e):t}function Et(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 At(e,t,r){return e.subarray(t,r)}function Rt(e,t){return e.fromBits(t)}function Tt(e,t){return e.toBits(t)}class Ut extends k{constructor({password:e,rawPassword:t,passwordVerification:s,checkPasswordOnly:n}){super({start(){r.assign(this,{password:e,rawPassword:t,passwordVerification:s}),Ot(this,e,t)},transform(e,t){const r=this;if(r.password||r.rawPassword){const t=Mt(r,e.subarray(0,12));if(r.password=r.rawPassword=null,0!=(t.at(-1)^r.passwordVerification))throw new p(et);e=e.subarray(12)}n?t.error(new p(rt)):t.enqueue(Mt(r,e))}})}}class Ct extends k{constructor({password:e,rawPassword:t,passwordVerification:s}){super({start(){r.assign(this,{password:e,rawPassword:t,passwordVerification:s}),Ot(this,e,t)},transform(e,t){const r=this;let s,n;if(r.password||r.rawPassword){r.password=r.rawPassword=null;const t=st(new f(12));t[11]=r.passwordVerification,s=new f(e.length+t.length),s.set(Wt(r,t),0),n=12}else s=new f(e.length),n=0;s.set(Wt(r,e),n),t.enqueue(s)}})}}function Mt(e,t){const r=new f(t.length);for(let s=0;s<t.length;s++)r[s]=Nt(e)^t[s],_t(e,r[s]);return r}function Wt(e,t){const r=new f(t.length);for(let s=0;s<t.length;s++)r[s]=Nt(e)^t[s],_t(e,t[s]);return r}function Ot(e,t,s){const n=[305419896,591751049,878082192];if(r.assign(e,{keys:n,crcKey0:new Ke(n[0]),crcKey2:new Ke(n[2])}),s)for(let t=0;t<s.length;t++)_t(e,s[t]);else for(let r=0;r<t.length;r++)_t(e,t.charCodeAt(r))}function _t(e,t){let[,r]=e.keys;e.crcKey0.append([t]);const s=~e.crcKey0.get();r=Lt(i.imul(Lt(r+Bt(s)),134775813)+1),e.crcKey2.append([r>>>24]);const n=~e.crcKey2.get();e.keys=[s,r,n]}function Nt(e){const t=2|e.keys[2];return Bt(i.imul(t,1^t)>>>8)}function Bt(e){return 255&e}function Lt(e){return 4294967295&e}const It="Invalid uncompressed size";class Pt extends k{constructor(e,{chunkSize:t,CompressionStreamZlib:r,CompressionStream:s}){super({});const{compressed:n,encrypted:a,useCompressionStream:i,zipCrypto:o,signed:c,level:l}=e,d=this;let u,p,f=super.readable;a&&!o||!c||(u=new je,f=qt(f,u)),n&&(f=Vt(f,i,{level:l,chunkSize:t},s,r,s)),a&&(o?f=qt(f,new Ct(e)):(p=new Ft(e),f=qt(f,p))),Zt(d,f,()=>{let e;a&&!o&&(e=p.signature),a&&!o||!c||(e=new m(u.value.buffer).getUint32(0)),d.signature=e})}}class Ht extends k{constructor(e,{chunkSize:t,DecompressionStreamZlib:r,DecompressionStream:s}){super({});const{zipCrypto:n,encrypted:a,signed:i,signature:o,compressed:c,useCompressionStream:l,deflate64:d}=e;let u,f,h=super.readable;a&&(n?h=qt(h,new Ut(e)):(f=new xt(e),h=qt(h,f))),c&&(h=Vt(h,l,{chunkSize:t,deflate64:d},s,r,s),h=(e=>{const t=e.getReader();return new D({async pull(e){let r;try{r=await t.read()}catch(e){if(e&&e.message)throw e;const t=new p("Invalid compressed data");throw t.cause=e,t}const{value:s,done:n}=r;n?e.close():e.enqueue(s)},cancel:e=>t.cancel(e)})})(h)),a&&!n||!i||(u=new je,h=qt(h,u)),Zt(this,h,()=>{if((!a||n)&&i){const e=new m(u.value.buffer);if(o!=e.getUint32(0,!1))throw new p(tt)}})}}function Zt(e,t,s){t=qt(t,new k({flush:s})),r.defineProperty(e,"readable",{get:()=>t})}function Vt(e,t,r,s,n,a){const i=t&&s?s:n||a,o=r.deflate64?"deflate64-raw":"deflate-raw";try{e=qt(e,new i(o,r))}catch(s){if(!t)throw s;if(n)e=qt(e,new n(o,r));else{if(!a)throw s;e=qt(e,new a(o,r))}}return e}function qt(e,t){return e.pipeThrough(t)}const Kt="data",jt="deflate",Xt="inflate";class Gt extends k{constructor(e,t){super({});const s=this,{codecType:n}=e;let a;n.startsWith(jt)?a=Pt:n.startsWith(Xt)&&(a=Ht),s.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(s,{inputSize:i})}}),d=new k({transform(t,r){if(t&&t.length&&(r.enqueue(t),s.outputSize+=t.length,e.outputSize!==J&&s.outputSize>e.outputSize))throw new p(It)},flush(){const{signature:e}=o;r.assign(s,{signature:e,inputSize:i})}});r.defineProperty(s,"readable",{get:()=>c.pipeThrough(l).pipeThrough(o).pipeThrough(d)})}}class Yt extends k{constructor(e){let t;1>e&&(e=65536),super({transform:(r,s)=>{if(t){const e=new f(t.length+r.length);e.set(t),e.set(r,t.length),r=e,t=null}let n=0;for(;r.length-n>e;)s.enqueue(r.slice(n,n+e)),n+=e;t=n?r.slice(n):r},flush(e){t&&t.length&&e.enqueue(t)}})}}const Jt={type:"module"},Qt="error";let $t,er,tr,rr,sr=!0;try{sr=typeof structuredClone==ee&&structuredClone(new DOMException("","AbortError")).code!==J}catch{}class nr{constructor(e,{readable:t,writable:s},{options:n,config:a,streamOptions:i,useWebWorkers:o,transferStreams:c,workerURI:l},d){const{signal:u}=i;return r.assign(e,{busy:!0,generation:(e.generation||0)+1,readable:t.pipeThrough(new Yt(ae(a))).pipeThrough(new ar(i),{signal:u}),writable:s,options:r.assign({},n),workerURI:l,transferStreams:c,terminate:()=>new y(t=>{const{worker:r,busy:s}=e;r?(s?e.resolveTerminated=t:(r.terminate(),t()),e.interface=null):t()}),onTaskFinished(){if(e.busy){const{resolveTerminated:t}=e;t&&(e.resolveTerminated=null,e.terminated=!0,e.worker.terminate(),t()),e.busy=!1,d(e)}}}),$t===J&&($t=typeof T!=$),(o&&$t?cr:or)(e,a)}}class ar extends k{constructor({onstart:e,onprogress:t,size:r,onend:s}){let n=0;super({async start(){e&&await ir(e,r)},async transform(e,s){n+=e.length,t&&await ir(t,n,r),s.enqueue(e)},async flush(){s&&await ir(s,n)}})}}async function ir(e,...t){try{await e(...t)}catch{}}function or(e,t){return{run:()=>(async({options:e,readable:t,writable:r,onTaskFinished:s},n)=>{let a;try{if(!e.useCompressionStream)try{await void 0}catch{e.useCompressionStream=!0}a=new Gt(e,n),await t.pipeThrough(a).pipeTo(r,{preventClose:!0,preventAbort:!0});const{signature:s,inputSize:i,outputSize:o}=a;return{signature:s,inputSize:i,outputSize:o}}catch(e){throw a&&(e.outputSize=a.outputSize),e}finally{s()}})(e,t)}}function cr(e,t){const{baseURI:s,chunkSize:n}=t;let{wasmURI:a}=t;if(!e.interface){let i;typeof a==ee&&(a=a());try{i=dr(e.workerURI,s,e)}catch{return $t=!1,or(e,t)}r.assign(e,{worker:i,terminated:!1,interface:{run:()=>(async(e,t)=>{let s,n;const a=new y((e,t)=>{s=e,n=t});r.assign(e,{reader:null,writer:null,resolveResult:s,rejectResult:n,result:a});const{readable:i,options:o}=e,{writable:c,closed:l,abortPipe:d}=(e=>{const t=new AbortController,{writable:r,readable:s}=new k,n=s.pipeTo(e,{preventClose:!0,preventAbort:!0,signal:t.signal});return n.catch(()=>{}),{writable:r,closed:n,abortPipe:()=>t.abort()}})(e.writable);let u;try{u=pr({type:"start",options:o,config:t,readable:i,writable:c},e)}catch(t){d();try{await l}catch{}throw e.onTaskFinished(),t}u||r.assign(e,{reader:i.getReader(),writer:c.getWriter()});try{const e=await a;return await p(),await l,e}catch(e){await p(),d();try{await l}catch{}throw e}async function p(){if(!u&&!c.locked)try{await c.getWriter().close()}catch{}}})(e,{chunkSize:n,wasmURI:a,baseURI:s})}})}return e.interface}function lr(e){const{worker:t}=e;if(t)try{t.terminate()}catch{}e.interface=null}function dr(e,t,s,n,a=!0){let i,o,c;if(tr===J||er!==e){const r=typeof e==ee;o=r?e(a):e;const l=o.startsWith("data:"),d=o.startsWith("blob:");if(l||d){n===J&&(n=!1),n&&(c=Jt);try{i=new T(o,c)}catch(a){if(d)try{u.revokeObjectURL(o)}catch{}if(r&&d)return dr(e,t,s,n,!1);if(n)throw a;return dr(e,t,s,!0,!1)}}else{n===J&&(n=!0),n&&(c=Jt);try{o=new u(o,t)}catch{}try{i=new T(o,c)}catch(r){if(n)throw r;return dr(e,t,s,!1,a)}}er=e,tr=o,rr=c}else i=new T(tr,rr);return i.addEventListener("message",e=>(async({data:e},t)=>{const{type:s,value:n,messageId:a,result:i,error:o}=e,{reader:c,writer:l,resolveResult:d,rejectResult:u,onTaskFinished:h,generation:w}=t,m=()=>t.generation!=w;try{if(o){const{message:e,stack:t,code:s,name:n,outputSize:a}=o,i=new p(e);r.assign(i,{stack:t,code:s,name:n,outputSize:a}),g(i)}else{if("pull"==s){const{value:e,done:r}=await c.read();m()||pr({type:Kt,value:e,done:r,messageId:a},t)}s==Kt&&(await l.ready,await l.write(new f(n)),m()||pr({type:"ack",messageId:a},t)),"close"==s&&g(null,i)}}catch(o){m()||(lr(t),g(o))}function g(e,t){m()||(e?u(e):d(t),l&&l.releaseLock(),h())}})(e,s)),i.addEventListener(Qt,e=>ur(e,s)),i.addEventListener("messageerror",e=>ur(e,s)),i}function ur(e,t){e.preventDefault&&e.preventDefault();const{rejectResult:r,writer:s,onTaskFinished:n}=t;lr(t),r&&(r(e.error||new p(e.message||Qt)),s&&s.releaseLock(),n())}function pr(e,{worker:t,writer:r,transferStreams:s}){try{const{value:r,readable:n,writable:a}=e,i=[];if(r&&(e.value=r,i.push(e.value.buffer)),s&&sr?(n&&i.push(n),a&&i.push(a)):e.readable=e.writable=null,i.length)try{return t.postMessage(e,i),!0}catch{sr=!1,e.readable=e.writable=null,t.postMessage(e)}else t.postMessage(e)}catch(e){throw r&&r.releaseLock(),e}}let fr=[];const hr=[];let wr,mr,gr=0;async function yr(e,t){const{options:r,config:s}=t,{transferStreams:a,useWebWorkers:i,useCompressionStream:o,compressed:c,signed:l,encrypted:d}=r,{workerURI:u,maxWorkers:p}=s;t.transferStreams=a||a===J;const f=!(c||l||d||t.transferStreams);return t.useWebWorkers=!f&&(i||i===J&&s.useWebWorkers),t.workerURI=t.useWebWorkers&&u?u:J,r.useCompressionStream=o||o===J&&s.useCompressionStream,(await(async()=>{const r=fr.find(e=>!e.busy);if(r)return Fr(r),new nr(r,e,t,h);if(fr.length<p){const r={indexWorker:gr};return gr++,fr.push(r),new nr(r,e,t,h)}return new y(r=>{hr.push({resolve:r,stream:e,workerOptions:t}),mr=s.workerStarvationTimeout,br()})})()).run();function h(e){if(zr(),hr.length){const[{resolve:t,stream:r,workerOptions:s}]=hr.splice(0,1);t(new nr(e,r,s,h)),br()}else e.worker?(Fr(e),((e,t)=>{const{config:r}=t,{terminateWorkerTimeout:s}=r;n.isFinite(s)&&s>=0&&(e.terminated?e.terminated=!1:e.terminateTimeout=setTimeout(async()=>{fr=fr.filter(t=>t!=e);try{await e.terminate()}catch{}},s))})(e,t)):fr=fr.filter(t=>t!=e)}}function br(){!wr&&hr.length&&n.isFinite(mr)&&mr>=0&&(wr=setTimeout(Sr,mr))}function zr(){wr&&(clearTimeout(wr),wr=null)}function Sr(){if(wr=null,hr.length){const[{resolve:e,stream:t,workerOptions:s}]=hr.splice(0,1),n=r.assign({},s,{useWebWorkers:!1,workerURI:J});e(new nr({},t,n,xr)),br()}}function xr(){zr(),br()}function Fr(e){const{terminateTimeout:t}=e;t&&(clearTimeout(t),e.terminateTimeout=null)}const kr="\0☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ".split("");function Dr(e,t){return t&&"cp437"==t.trim().toLowerCase()?(e=>{{let t="";for(let r=0;r<e.length;r++)t+=kr[e[r]];return t}})(e):new z(t,{ignoreBOM:!0}).decode(e)}const vr="filename",Er="rawFilename",Ar="comment",Rr="rawComment",Tr="uncompressedSize",Ur="compressedSize",Cr="offset",Mr="diskNumberStart",Wr="lastModDate",Or="rawLastModDate",_r="lastAccessDate",Nr="creationDate",Br="rawCreationDate",Lr="internalFileAttributes",Ir="externalFileAttributes",Pr="msdosAttributesRaw",Hr="msdosAttributes",Zr="msDosCompatible",Vr="zip64",qr="encrypted",Kr="version",jr="versionMadeBy",Xr="zipCrypto",Gr="directory",Yr="executable",Jr="compressionMethod",Qr="signature",$r="extraField",es="unixMode",ts="setuid",rs="setgid",ss="sticky",ns=[vr,Er,Tr,Ur,Wr,Or,Ar,Rr,_r,Nr,Br,Cr,Mr,Lr,Ir,Pr,Hr,Zr,Vr,qr,Kr,jr,Xr,Gr,Yr,Jr,Qr,$r,"extraFieldUnix","extraFieldInfoZip","uid","gid",es,ts,rs,ss,"bitFlag","filenameUTF8","commentUTF8","rawExtraField","extraFieldZip64","extraFieldUnicodePath","extraFieldUnicodeComment","extraFieldAES","extraFieldNTFS","extraFieldExtendedTimestamp"];class as{constructor(e){ns.forEach(t=>this[t]=e[t])}}const is="password",os="rawPassword",cs="passThrough",ls="signal",ds="checkAmbiguity",us="useWebWorkers",ps="useCompressionStream",fs="transferStreams",hs="preventClose",ws="offset",ms="File format is not recognized",gs="Compression method not supported",ys="Split zip file",bs="utf-8",zs="cp437",Ss=[[Tr,U],[Ur,U],[Cr,U],[Mr,C]],xs={[C]:{getValue:_s,bytes:4},[U]:{getValue:Ns,bytes:8}};class Fs{constructor(e,t={}){r.assign(this,{reader:new Pe(e),options:t,config:ne(),readRanges:new c})}async*getEntriesGenerator(e={}){const t=this;let{reader:s}=t;const{config:n}=t;if(await Ze(s),s.size!==J&&s.readUint8Array||(s=new be(await new d(s.readable).blob()),await Ze(s)),s.size<P)throw new p(ms);s.chunkSize=ae(n);const a=await(async(e,t,r)=>{const s=new f(4);var n;return n=t,Bs(s).setUint32(0,n,!0),await a(22)||await a(i.min(1048582,r));async function a(t){const n=r-t,a=await Ve(e,n,t);for(let e=a.length-22;e>=0;e--)if(a[e]==s[0]&&a[e+1]==s[1]&&a[e+2]==s[2]&&a[e+3]==s[3])return{offset:n+e,buffer:a.slice(e,e+22).buffer}}})(s,B,s.size);if(!a)throw _s(Bs(await Ve(s,0,4)))==O?new p(ys):new p("End of central directory not found");const o=Bs(a);let c=_s(o,12),u=_s(o,16);const h=a.offset,w=Os(o,20),m=h+P+w,g=Us(t,e,ds);g&&m!=s.size&&Ts("appended data");let b=Os(o,4);const z=s.lastDiskNumber||0;let S,x,F=Os(o,6),D=Os(o,10),v=0;if(u==U||c==U||D==C||F==C){const e=20>a.offset?new f:await Ve(s,a.offset-20,20),t=Bs(e);if(20==e.length&&_s(t,0)==I){u=Ns(t,8);let e=await Ve(s,u,56,-1),r=Bs(e);const n=a.offset-20-56-(s.lastDiskOffset||0);if((56>e.length||_s(r,0)!=L)&&u!=n&&n>=0){const t=u;u=n,u>t&&(v=u-t),e=await Ve(s,u,56,-1),r=Bs(e)}if(56>e.length||_s(r,0)!=L)throw new p("End of Zip64 central directory locator not found");x=!0,b==C?b=_s(r,16):g&&b!=_s(r,16)&&Ts("mismatched zip64 end of central directory record"),F==C?F=_s(r,20):g&&F!=_s(r,20)&&Ts("mismatched zip64 end of central directory record"),D==C?D=Ns(r,32):g&&D!=Ns(r,32)&&Ts("mismatched zip64 end of central directory record"),c==U?c=Ns(r,40):g&&c!=Ns(r,40)&&Ts("mismatched zip64 end of central directory record"),u=Ns(r,48)+v}}const E=c,A=a.offset-(x?76:0);if(u<s.size||(v=s.size-u-c-P,u=s.size-c-P),z!=b)throw new p(ys);if(0>u)throw new p(ms);let R=0,T=await Ve(s,u,c,F),W=Bs(T);if(c){if(4>T.length)throw new p(ms);const e=A-c-(s.lastDiskOffset||0);if(_s(W,R)!=N&&u!=e&&F==b){const t=u;u=e,u>t&&(v+=u-t),T=await Ve(s,u,c,F),W=Bs(T)}}const _=A-u-(s.lastDiskOffset||0);if(c==_||0>_||F!=b||(c=_,T=await Ve(s,u,c,F),W=Bs(T)),0>u||u>=s.size)throw new p(ms);S=u;const H=Us(t,e,"filenameEncoding"),Z=Us(t,e,"commentEncoding"),X=g?new l:J;let G;for(let a=0;D>a;a++){const o=new ks(s,n,t.options);if(R+46>T.length||_s(W,R)!=N)throw new p("Central directory header not found");Ds(o,W,R+6);const c=!!o.bitFlag.languageEncodingFlag,l=R+46,u=l+o.filenameLength,f=u+o.extraFieldLength,h=Os(W,R+4),w=!(h>>8),m=h>>8==3,b=T.subarray(l,u),z=Os(W,R+32),x=f+z,F=T.subarray(f,x),E=c,A=c,U=_s(W,R+38),O=U&M,_={readOnly:!!(1&O),hidden:!!(2&O),system:!!(4&O),directory:!!(16&O),archive:!!(32&O)},B=_s(W,R+42),L=Us(t,e,"decodeText")||Dr,I=E?bs:H||zs,P=A?bs:Z||zs;let Y=L(b,I);Y===J&&(Y=Dr(b,I));let Q=L(F,P);Q===J&&(Q=Dr(F,P)),r.assign(o,{index:a,versionMadeBy:h,msDosCompatible:w,compressedSize:0,uncompressedSize:0,commentLength:z,offset:B,diskNumberStart:Os(W,R+34),internalFileAttributes:Os(W,R+36),externalFileAttributes:U,msdosAttributesRaw:O,msdosAttributes:_,rawFilename:b,filenameUTF8:E,commentUTF8:A,rawExtraField:T.subarray(u,f),rawComment:F,filename:Y,comment:Q}),vs(o,o,W,R+6),o.offset+=v,S=i.min(o.offset,S),g&&(X.has(o.filename)&&(G=!0),X.add(o.filename));const $=o.externalFileAttributes>>16&C;o.unixMode===J&&16877&$&&(o.unixMode=$);const ee=!!(o.unixMode&q),te=!!(o.unixMode&K),re=!!(512&o.unixMode),se=o.unixMode!==J?!!(73&o.unixMode):m&&!!(73&$),ne=o.unixMode!==J&&(61440&o.unixMode)==V,ae=(61440&$)==V;r.assign(o,{setuid:ee,setgid:te,sticky:re,unixExternalUpper:$,internalFileAttribute:o.internalFileAttributes,externalFileAttribute:o.externalFileAttributes,executable:se,directory:ne||ae||w&&_.directory||o.filename.endsWith(j)&&!o.uncompressedSize,zipCrypto:o.encrypted&&!o.extraFieldAES});const ie=new as(o);ie.getData=(e,r)=>o.getData(e,ie,t.readRanges,r),ie.arrayBuffer=async e=>{const r=new k,[s]=await y.all([new d(r.readable).arrayBuffer(),o.getData(r,ie,t.readRanges,e)]);return s},R=x;const{onprogress:oe}=e;if(oe)try{await oe(a+1,D,new as(o))}catch{}yield ie}g&&R!=E&&Ts("trailing central directory data"),G&&Ts("duplicate filename"),g&&(v||D&&S>0)&&Ts("prepended data");const Y=Us(t,e,"extractPrependedData"),Q=Us(t,e,"extractAppendedData");return Y&&(t.prependedData=S>0?await Ve(s,0,S):new f),t.comment=w?await Ve(s,h+P,w):new f,Q&&(t.appendedData=m<s.size?await Ve(s,m,s.size-m):new f),!0}async getEntries(e={}){const t=[];for await(const r of this.getEntriesGenerator(e))t.push(r);return t}async close(){}}let ks=class{constructor(e,t,s){r.assign(this,{reader:e,config:t,options:s})}async getData(e,t,s,n={}){const a=this,{reader:o,index:c,offset:l,diskNumberStart:d,extraFieldAES:u,extraFieldZip64:h,compressionMethod:w,config:m,bitFlag:g,signature:y,rawLastModDate:b,uncompressedSize:z,compressedSize:S}=a,{dataDescriptor:x}=g,F=t.localDirectory={},k=await Ve(o,l,X,d),D=Bs(k);let E=Us(a,n,is),A=Us(a,n,os);const R=Us(a,n,cs);if(E=E&&E.length&&E,A=A&&A.length&&A,u&&99!=u.originalCompressionMethod)throw new p(gs);if(0!=w&&8!=w&&9!=w&&!R)throw new p(gs);if(k.length<X||_s(D,0)!=W)throw new p("Local file header not found");Ds(F,D,4);const{extraFieldLength:T,filenameLength:U}=F,C=Us(a,n,ds);let O=new f;if(C&&(U||T)){const e=await Ve(o,l+X,U+T,d);O=e.subarray(0,U),F.rawExtraField=e.subarray(U)}else F.rawExtraField=T?await Ve(o,l+X+U,T,d):new f;vs(a,F,D,4,!0),C&&((e,t,r)=>{const{rawFilename:s}=e;(r.length!=s.length||r.some((e,t)=>e!=s[t]))&&Ts("mismatched local file header (filename)"),(2057&t.rawBitFlag)!=(2057&e.rawBitFlag)&&Ts("mismatched local file header (general purpose bit flag)"),t.compressionMethod!=e.compressionMethod&&Ts("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||Ts("mismatched local file header (signature or sizes)")})(a,F,O);const{lastAccessDate:N,creationDate:B}=F;N&&(t.lastAccessDate=N),B&&(t.creationDate=B);const L=a.encrypted&&F.encrypted&&!R,I=L&&!u;if(R||(t.zipCrypto=I),L){if(!I&&u.strength===J)throw new p("Encryption method not supported");if(!E&&!A)throw new p("File contains encrypted entry")}const P=l+X+U+T,H=S,Z=o.readable;r.assign(Z,{diskNumberStart:d,offset:P,size:H});const V=Us(a,n,ls),q=Us(a,n,"checkPasswordOnly");let K=Us(a,n,"checkOverlappingEntry");const j=Us(a,n,"checkOverlappingEntryOnly");j&&(K=!0);const{onstart:G,onprogress:Y,onend:Q}=n,$=9==w;let ee=Us(a,n,ps);$&&(ee=!1);const te={options:{codecType:Xt,password:E,rawPassword:A,zipCrypto:I,encryptionStrength:u&&u.strength,signed:Us(a,n,"checkSignature")&&!R,passwordVerification:I&&(x?b>>>8&M:y>>>24&M),outputSize:R?S:z,signature:y,compressed:0!=w&&!R,encrypted:L,useWebWorkers:Us(a,n,us),useCompressionStream:ee,transferStreams:Us(a,n,fs),deflate64:$,checkPasswordOnly:q},config:m,streamOptions:{signal:V,size:H,onstart:G,onprogress:Y,onend:Q}};let re;K&&await(async({reader:e,fileEntry:t,index:r,offset:s,diskNumberStart:n,signature:a,compressedSize:o,uncompressedSize:c,dataOffset:l,dataDescriptor:d,extraFieldZip64:u,readRanges:f})=>{let h=0;if(n&&e.readers)for(let t=0;t<i.min(n,e.readers.length);t++)h+=e.readers[t].size;let w=0;if(d&&(w=u?20:12),w){const r=await Ve(e,l+o,w+4,n);if(r.length==w+4&&_s(Bs(r),0)==_){const e=_s(Bs(r),4);let s,n;u?(s=Ns(Bs(r),8),n=Ns(Bs(r),16)):(s=_s(Bs(r),8),n=_s(Bs(r),12)),(t.encrypted&&!t.zipCrypto||e==a)&&s==o&&n==c&&(w+=4)}}const m={start:h+s,end:h+l+o+w,fileEntry:t};for(const[e,t]of f)if(e!=r&&m.start<t.end&&t.start<m.end){const e=new p("Overlapping entry found");throw e.overlappingEntry=t.fileEntry,e}f.set(r,m)})({reader:o,fileEntry:t,index:c,offset:l,diskNumberStart:d,signature:y,compressedSize:S,uncompressedSize:z,dataOffset:P,dataDescriptor:x||F.bitFlag.dataDescriptor,extraFieldZip64:h||F.extraFieldZip64,readRanges:s});try{if(!j){q&&(e=new v),e=new He(e),await Ze(e,R?S:z),({writable:re}=e);const{outputSize:t}=await yr({readable:Z,writable:re},te);if(e.size+=t,t!=(R?S:z))throw new p(It)}}catch(t){if(t.outputSize!==J&&(e.size+=t.outputSize),!q||t.message!=rt)throw t}finally{Us(a,n,hs)||!re||re.locked||await re.getWriter().close()}return q||j?J:e.getData?e.getData():re}};function Ds(e,t,s){const n=e.rawBitFlag=Os(t,s+2),a=!(1&~n),i=_s(t,s+6);r.assign(e,{encrypted:a,version:Os(t,s),bitFlag:{level:(6&n)>>1,dataDescriptor:!(8&~n),languageEncodingFlag:(n&Z)==Z},rawLastModDate:i,lastModDate:Cs(i),filenameLength:Os(t,s+22),extraFieldLength:Os(t,s+24)})}function vs(e,t,s,n,a){const{rawExtraField:i}=t,l=t.extraField=new c,d=Bs(new f(i));let u=0;try{for(;u<i.length;){const e=Os(d,u),t=Os(d,u+2);l.set(e,{type:e,data:i.slice(u+4,u+4+t)}),u+=4+t}}catch{}const h=Os(s,n+4);r.assign(t,{signature:_s(s,n+10),compressedSize:_s(s,n+14),uncompressedSize:_s(s,n+18)});const w=l.get(1);w&&(((e,t)=>{t.zip64=!0;const r=Bs(e.data),s=Ss.filter(([e,r])=>t[e]==r),n=s.reduce((e,[,t])=>e+xs[t].bytes,0);if(e.data.length<n)throw new p("Zip64 extra field not found");for(let n=0,a=0;n<s.length;n++){const[i,o]=s[n],c=xs[o];t[i]=e[i]=c.getValue(r,a),a+=c.bytes}})(w,t),t.extraFieldZip64=w);const m=l.get(28789);m&&(Es(m,vr,Er,t,e),t.extraFieldUnicodePath=m);const g=l.get(25461);g&&(Es(g,Ar,Rr,t,e),t.extraFieldUnicodeComment=g);const y=l.get(39169);y&&y.data.length>=7?(((e,t,s)=>{const n=Bs(e.data),a=Ws(n,4);r.assign(e,{vendorVersion:Ws(n,0),vendorId:Ws(n,2),strength:a,originalCompressionMethod:s,compressionMethod:Os(n,5)}),t.compressionMethod=e.compressionMethod})(y,t,h),t.extraFieldAES=y):t.compressionMethod=h;const b=l.get(10);b&&(((e,t)=>{const s=Bs(e.data);let n,a=4;try{for(;a<e.data.length&&!n;){const t=Os(s,a),r=Os(s,a+2);1==t&&(n=e.data.slice(a+4,a+4+r)),a+=4+r}}catch{}try{if(n&&24==n.length){const s=Bs(n),a=s.getBigUint64(0,!0),i=s.getBigUint64(8,!0),o=s.getBigUint64(16,!0);r.assign(e,{rawLastModDate:a,rawLastAccessDate:i,rawCreationDate:o});const c={lastModDate:Ms(a),lastAccessDate:Ms(i),creationDate:Ms(o)};r.assign(e,c),r.assign(t,c)}}catch{}})(b,t),t.extraFieldNTFS=b);const z=l.get(30805);if(z)As(z,t,!1),t.extraFieldUnix=z;else{const e=l.get(30837);e&&(As(e,t,!0),t.extraFieldInfoZip=e)}const S=l.get(H);S&&(((e,t,r)=>{if(!e.data.length)return;const s=Bs(e.data),n=Ws(s,0),a=[],i=[];r?(1&~n||(a.push(Wr),i.push(Or)),2&~n||(a.push(_r),i.push("rawLastAccessDate")),4&~n||(a.push(Nr),i.push(Br))):5>e.data.length||(a.push(Wr),i.push(Or));let c=1;a.forEach((r,n)=>{if(e.data.length>=c+4){const a=_s(s,c);t[r]=e[r]=new o(1e3*(0|a));const l=i[n];e[l]=a}c+=4})})(S,t,a),t.extraFieldExtendedTimestamp=S);const x=l.get(6534);x&&(t.extraFieldUSDZ=x)}function Es(e,t,s,n,a){if(5>e.data.length)return void(e.valid=!1);const i=Bs(e.data),o=new Ke;o.append(a[s]);const c=Bs(new f(4));c.setUint32(0,o.get(),!0);const l=_s(i,1);r.assign(e,{version:Ws(i,0),[t]:Dr(e.data.subarray(5)),valid:!a.bitFlag.languageEncodingFlag&&l==_s(c,0)}),e.valid&&(n[t]=e[t],n[t+"UTF8"]=!0)}function As(e,t,s){try{const n=Bs(new f(e.data));let a,i;if(s){let t=0;const s=Ws(n,t++),o=Ws(n,t++);a=Rs(e.data.subarray(t,t+o)),t+=o;const c=Ws(n,t++);i=Rs(e.data.subarray(t,t+c)),r.assign(e,{version:s,uid:a,gid:i})}else 4>e.data.length||(a=Os(n,0),i=Os(n,2),r.assign(e,{uid:a,gid:i}));a!==J&&(t.uid=a),i!==J&&(t.gid=i)}catch{}}function Rs(e){const t=new f(4);return t.set(e,0),new m(t.buffer,t.byteOffset,4).getUint32(0,!0)}function Ts(e){const t=new p("Ambiguous archive");throw t.reason=e,t}function Us(e,t,r){return t[r]===J?e.options[r]:t[r]}function Cs(e){const t=(4294901760&e)>>16,r=e&C;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 Ms(e){return new o(n(e/a(1e4)-a(116444736e5)))}function Ws(e,t){return e.getUint8(t)}function Os(e,t){return e.getUint16(t,!0)}function _s(e,t){return e.getUint32(t,!0)}function Ns(e,t){return n(e.getBigUint64(t,!0))}function Bs(e){return new m(e.buffer,e.byteOffset,e.byteLength)}const Ls="Zip file comment exceeds 64KB",Is="Version exceeds 65535",Ps="Extra field data exceeds 64KB",Hs=-2147483648,Zs=2147483647,Vs="Zip64 is not supported (set the 'zip64' option to 'true')",qs=new f([7,0,2,0,65,69,3,0,0]),Ks="infozip",js="unix";let Xs=0;const Gs=[];class Ys{constructor(e,t={}){const s=(e=new He(e)).availableSize!==J&&e.availableSize>0&&e.availableSize!==Q&&e.maxSize!==J&&e.maxSize>0&&e.maxSize!==Q;r.assign(this,{writer:e,addSplitZipSignature:s,options:t,config:ne(),files:new c,filenames:new l,offset:t[ws]===J?e.size||e.writable.size||0:t[ws],initialOffset:t[ws]===J?0:t[ws]-(e.size||e.writable.size||0),pendingAddFileCalls:new l,bufferedWrites:0,lastFileEntry:J})}async prependZip(e){if(this.filenames.size)throw new p("Zip file not empty");e=new Pe(e),await Ze(e);const t=new Fs(e.readable),s=await t.getEntries();await t.close(),await Ze(this.writer),await e.readable.pipeTo(this.writer.writable,{preventClose:!0,preventAbort:!0}),this.writer.size=this.offset=e.size,this.filenames=new l(s.map(e=>e.filename)),this.files=new c(s.map(e=>{const{version:t,rawLastModDate:s,lastAccessDate:n,creationDate:a,rawFilename:i,bitFlag:o,encrypted:c,uncompressedSize:l,compressedSize:d,diskOffset:u,diskNumber:p,zip64:h}=e;let{compressionMethod:w,rawExtraFieldZip64:m,rawExtraFieldAES:g,rawExtraFieldExtendedTimestamp:y,rawExtraFieldNTFS:b,rawExtraFieldUnix:z,rawExtraField:S}=e;const{level:x,languageEncodingFlag:F,dataDescriptor:k}=o;m=m||new f,g=g||new f,y=y||new f,b=b||new f,z=z||new f,S=S||new f,e.extraFieldAES&&(w=99);const D=hn(m,g,y,b,z,S),v=h&&l>=U,E=h&&d>=U,A=-7&mn(x,F,k,c,w)|x<<1,{headerArray:R,headerView:T}=wn({version:t,bitFlag:A,compressionMethod:w,uncompressedSize:l,compressedSize:d,rawLastModDate:s,rawFilename:i,zip64CompressedSize:E,zip64UncompressedSize:v,extraFieldLength:D}),{signature:M}=e;return M!==J&&dn(T,10,M),r.assign(e,{zip64UncompressedSize:v,zip64CompressedSize:E,zip64Offset:h&&this.offset-u>=U,zip64DiskNumberStart:h&&p>=C,rawExtraFieldZip64:m,rawExtraFieldAES:g,rawExtraFieldExtendedTimestamp:y,rawExtraFieldNTFS:b,rawExtraFieldUnix:z,rawExtraField:S,extendedTimestamp:y.length>0||b.length>0,extraFieldExtendedTimestampFlag:1+(n?2:0)+(a?4:0),headerArray:R,headerView:T}),[e.filename,e]}))}async add(e="",t,s={}){const n=this;s=r.assign({},s);const{pendingAddFileCalls:i,config:c}=n;let l,d;Xs<c.maxWorkers?Xs++:await new y(e=>Gs.push(e));try{if(e=e.trim(),on(n,s,Gr)&&!e.endsWith(j)&&(e+=j),n.filenames.has(e))throw new p("File already exists");return n.filenames.add(e),d=!0,l=(async(e,t,s,n)=>{const i=((e,t,r)=>{t=t.trim();let s=on(e,r,Zr),n=on(e,r,jr,s?20:768);const a=on(e,r,Yr),i=on(e,r,"uid"),o=on(e,r,"gid");let c=on(e,r,es),l=on(e,r,"unixExtraFieldType"),d=on(e,r,ts),u=on(e,r,rs),f=on(e,r,ss);if(i!==J&&(0>i||i>U))throw new p("Invalid uid (must be integer 0..2^32-1)");if(o!==J&&(0>o||o>U))throw new p("Invalid gid (must be integer 0..2^32-1)");if(c!==J&&(0>c||c>C))throw new p("Invalid UNIX mode (must be integer 0..65535)");if(l!==J&&l!==Ks&&l!==js)throw new p("Invalid unixExtraFieldType (must be 'infozip' or 'unix')");if(l===js&&(i!==J&&i>C||o!==J&&o>C))throw new p("uid/gid must be 0..65535 for unixExtraFieldType 'unix' (use 'infozip' for larger ids)");l!==J||i===J&&o===J||(l=Ks);let h=on(e,r,Pr),w=on(e,r,Hr);const m=h!==J||w!==J;if(i!==J||o!==J||c!==J||l?(s=!1,n=n&C|768):m&&(s=!0,n&=M),h!==J&&(0>h||h>M))throw new p("Invalid msdosAttributesRaw (must be integer 0..255)");if(w&&"object"!=typeof w)throw new p("Invalid msdosAttributes (must be an object with boolean flags)");if(n>C)throw new p(Is);let g=on(e,r,Ir,0);!r[Gr]&&t.endsWith(j)&&(r[Gr]=!0);const y=on(e,r,Gr);let b;return y?(t.endsWith(j)||(t+=j),0===g&&(g=16,s||(g|=16877<<16))):s||0!==g||(g=a?493<<16:27525120),s||(b=g>>16&C,c=c===J?b:c&C,d?c|=q:d=!!(c&q),u?c|=K:u=!!(c&K),f?c|=512:f=!!(512&c),y&&(c|=V),g=(c&C)<<16|g&M),({msdosAttributesRaw:h,msdosAttributes:w}=((e,t)=>{if(e!==J)e&=M;else if(t!==J){const{readOnly:r,hidden:s,system:n,directory:a,archive:i}=t;let o=0;r&&(o|=1),s&&(o|=2),n&&(o|=4),a&&(o|=16),i&&(o|=32),e=o&M}return t===J&&(t={readOnly:!!(1&e),hidden:!!(2&e),system:!!(4&e),directory:!!(16&e),archive:!!(32&e)}),{msdosAttributesRaw:e,msdosAttributes:t}})(h,w)),m&&(g=g&U|h&M),{name:t,resolvedOptions:{versionMadeBy:n,msDosCompatible:s,externalFileAttributes:g,unixExternalUpper:b,uid:i,gid:o,unixMode:c,unixExtraFieldType:l,setuid:d,setgid:u,sticky:f,msdosAttributesRaw:h,msdosAttributes:w}}})(e,t,n);({name:t}=i);const c=((e,t,r)=>{const s=on(e,r,"encodeText",Xe);let n=s(t);if(n===J&&(n=Xe(t)),hn(n)>C)throw new p("File entry name exceeds 64KB");const a=r[Ar]||"";let i=s(a);if(i===J&&(i=Xe(a)),hn(i)>C)throw new p("File entry comment exceeds 64KB");const c=on(e,r,Kr,20);if(c>C)throw new p(Is);const l=on(e,r,Wr,new o),d=on(e,r,_r),u=on(e,r,Nr),h=on(e,r,Lr,0),w=on(e,r,cs);let m,g;w||(m=on(e,r,is),g=on(e,r,os));const y=on(e,r,"encryptionStrength",3),b=on(e,r,Xr),z=on(e,r,"extendedTimestamp",!0),S=on(e,r,"keepOrder",!0),x=on(e,r,us),F=on(e,r,fs,!0),k=on(e,r,"bufferedWrite"),D=on(e,r,"createTempStream"),v=on(e,r,"dataDescriptorSignature",!0),E=on(e,r,ls),A=on(e,r,"useUnicodeFileNames",!0),R=on(e,r,Jr);if(!w&&R!==J&&0!==R&&8!==R)throw new p("Compression method not supported");let T=on(e,r,"level"),U=on(e,r,ps),M=on(e,r,"dataDescriptor");k&&M===J&&(M=!1),(M===J||b)&&(M=!0),T!==J&&6!=T&&(U=!1),U||e.config.CompressionStream!==J||e.config.CompressionStreamZlib!==J||(T=0);const W=on(e,r,Vr);if(!b&&(m!==J||g!==J)&&(1>y||y>3))throw new p("The strength must equal 1, 2, or 3");let O=new f;const _=r[$r];if(_){let e=0,t=0;_.forEach(t=>e+=4+hn(t)),O=new f(e);const r=fn(O);_.forEach((e,s)=>{if(s>C)throw new p("Extra field type exceeds 65535");if(hn(e)>C)throw new p(Ps);ln(r,t,s),ln(r,t+2,hn(e)),pn(O,e,t+4),t+=4+hn(e)})}return{comment:a,resolvedOptions:{rawFilename:n,rawComment:i,version:c,lastModDate:l,lastAccessDate:d,creationDate:u,internalFileAttributes:h,passThrough:w,password:m,rawPassword:g,encryptionStrength:y,zipCrypto:b,extendedTimestamp:z,keepOrder:S,useWebWorkers:x,transferStreams:F,bufferedWrite:k,createTempStream:D,dataDescriptorSignature:v,signal:E,useUnicodeFileNames:A,compressionMethod:R,level:T,useCompressionStream:U,dataDescriptor:M,zip64:W,rawExtraField:O}}})(e,t,n),{comment:l}=c,d=n[$r];let u;e.files.set(t,J);try{const o=await(async(e,t,{resolvedOptions:r},s)=>{const{passThrough:n,zipCrypto:a,password:i,rawPassword:o,encryptionStrength:c}=r;let{dataDescriptor:l,zip64:d,level:u,compressionMethod:f}=r,h=0,w=0;if(n){if(!t)throw new p("Undefined reader");if(w=s[Tr],w===J)throw new p("Undefined uncompressed size")}const m=!0===d,g=on(e,s,qr),y=!!t&&(!!(i&&hn(i)||o&&hn(o))||n&&g);t||(u=0,f=0);const b=y?a?12:16+4*c:0;t&&(t=new Pe(t),await Ze(t),n?(s.uncompressedSize=w,h=cn(w)+b):t.size===J?(l=!0,(d||d===J)&&(d=!0,w=h=4294967296)):(s.uncompressedSize=w=t.size,h=cn(w)+b));const z=m||w>=U,S=m||h>=U;if(z||S){if(!1===d)throw new p(Vs);d=!0}return d=d||!1,{reader:t,resolvedOptions:{dataDescriptor:l,zip64:d,zip64UncompressedSize:z,zip64CompressedSize:S,uncompressedSize:w,level:u,compressionMethod:f,encrypted:y}}})(e,s,c,n);({reader:s}=o);const{diskOffset:l,diskNumber:d}=e.writer,h=(e=>{const{rawFilename:t,lastModDate:r,lastAccessDate:s,creationDate:n,level:a,zip64:i,zipCrypto:o,useUnicodeFileNames:c,dataDescriptor:l,directory:d,rawExtraField:u,encryptionStrength:h,extendedTimestamp:w,passThrough:m,encrypted:g,zip64UncompressedSize:y,zip64CompressedSize:b,uncompressedSize:z}=e;let{version:S,compressionMethod:x}=e;const F=!d&&(x===J?a===J||a>0:0!==x);let k;const D=m||!F,v=i&&(e.bufferedWrite||!l||!y&&!b||D),E=v||i&&l&&(y||b);if(i&&(y||b)){const e=20,t=$s(e);if(t.uint16(1),t.uint16(e-4),k=t.array,v&&(t.uint64(z),D)){const e=g?o?12:16+4*h:0;t.uint64(m?0:z+e)}}else k=new f;let A,R,T,U,M;if(g&&!o){const e=$s(hn(qs)+2);e.uint16(39169),e.bytes(qs),A=e.array,A[8]=h}else A=new f;if(w){const e=sn(r);if(nn(e)){const t=9+(s?4:0)+(n?4:0),r=$s(t);U=1+(s?2:0)+(n?4:0),r.uint16(H),r.uint16(t-4),r.uint8(U),r.uint32(e),s&&r.uint32(an(sn(s))),n&&r.uint32(an(sn(n))),T=r.array}else T=new f;try{const e=rn(r),t=$s(36);t.uint16(10),t.uint16(32),t.skip(4),t.uint16(1),t.uint16(24),t.uint64(e),t.uint64(rn(s)||e),t.uint64(rn(n)||e),R=t.array}catch{R=new f}}else R=T=new f;try{const{uid:t,gid:r,unixExtraFieldType:s}=e;if(s!=Ks||t===J&&r===J)if(s!=js||t===J&&r===J)M=new f;else{const e=$s(8);e.uint16(30805),e.uint16(4),e.uint16((t===J?0:t)&C),e.uint16((r===J?0:r)&C),M=e.array}else{const e=Qs(t),s=Qs(r),n=3+e.length+s.length,a=$s(4+n);a.uint16(30837),a.uint16(n),a.uint8(1),a.uint8(e.length),a.bytes(e),a.uint8(s.length),a.bytes(s),M=a.array}}catch{M=new f}x===J&&(x=F?8:0),i&&(S=S>45?S:45),g&&!o&&(S=S>51?S:51,A[9]=x,x=99);const O=E?hn(k):0,_=O+hn(A,T,R,M,u);if(_>C)throw new p(Ps);const{headerArray:N,headerView:B,rawLastModDate:L}=wn({version:S,bitFlag:mn(a,c,l,g,x),compressionMethod:x,uncompressedSize:z,lastModDate:Y>r?Y:r>G?G:r,rawFilename:t,zip64CompressedSize:b,zip64UncompressedSize:y,extraFieldLength:_}),I=$s(X+hn(t)+_),P=I.array,Z=fn(P);return I.uint32(W),I.bytes(N),I.bytes(t),E&&I.bytes(k),I.bytes(A),I.bytes(T),I.bytes(R),I.bytes(M),I.bytes(u),l&&(b||dn(Z,18,0),y||dn(Z,22,0)),{localHeaderArray:P,localHeaderView:Z,headerArray:N,headerView:B,lastModDate:r,rawLastModDate:L,encrypted:g,compressed:F,version:S,compressionMethod:x,extraFieldExtendedTimestampFlag:U,rawExtraFieldZip64:new f,localExtraFieldZip64Length:O,rawExtraFieldExtendedTimestamp:T,rawExtraFieldNTFS:R,rawExtraFieldUnix:M,rawExtraFieldAES:A,extraFieldLength:_}})(n=r.assign({},n,i.resolvedOptions,c.resolvedOptions,o.resolvedOptions,{internalFileAttribute:c.resolvedOptions.internalFileAttributes,externalFileAttribute:i.resolvedOptions.externalFileAttributes,signature:n[Qr],offset:e.offset-l,diskNumberStart:d})),w=(({zip64:e,dataDescriptor:t,dataDescriptorSignature:r})=>{let s,n=new f,a=0,i=e?20:12;return r&&(i+=4),t&&(n=new f(i),s=fn(n),r&&(a=4,dn(s,0,_))),{dataDescriptorArray:n,dataDescriptorView:s,dataDescriptorOffset:a}})(n),m=hn(h.localHeaderArray,w.dataDescriptorArray);u=await(async(e,t,s,n,i)=>{const{files:o,writer:c}=e,{keepOrder:l,dataDescriptor:d,signal:u}=i,{headerInfo:h}=n,w=e.options.usdz,m=e.lastFileEntry;let g,b,z,S,x,F,D,E={},A=0;o.set(t,E),e.lastFileEntry=E;try{let b;l&&(b=m&&m.lock,E.lock=new y(e=>z=e)),i.bufferedWrite||!l||e.writerLocked||e.bufferedWrites||!d?(g=!0,e.bufferedWrites++,D=i.createTempStream?await i.createTempStream():new k(J,J,{highWaterMark:Q}),D.size=0,await Ze(c)):(D=c,await R()),await Ze(D);const{diskOffset:C}=c;if(e.addSplitZipSignature){delete e.addSplitZipSignature;const t=new f(4);dn(fn(t),0,O),await tn(c,t),e.offset+=4}w&&!g&&Js(n,e.offset-C);const{localHeaderArray:W}=h;g||(await b,await T());const _=c.diskNumber,N=en(e,c);if(E.diskNumberStart=_,g||(x=!0,F=c.size,await tn(D,W)),E=await(async(e,t,{diskNumberStart:s,lock:n},i,o,c)=>{const{headerInfo:l,dataDescriptorInfo:d,metadataSize:u}=i,{headerArray:f,headerView:h,lastModDate:w,rawLastModDate:m,encrypted:g,compressed:y,version:b,compressionMethod:z,rawExtraFieldZip64:S,localExtraFieldZip64Length:x,rawExtraFieldExtendedTimestamp:F,extraFieldExtendedTimestampFlag:k,rawExtraFieldNTFS:D,rawExtraFieldUnix:v,rawExtraFieldAES:E}=l,{dataDescriptorArray:A}=d,{rawFilename:R,lastAccessDate:T,creationDate:C,password:W,rawPassword:O,level:_,zip64:N,zip64UncompressedSize:B,zip64CompressedSize:L,zipCrypto:I,dataDescriptor:P,directory:H,executable:Z,versionMadeBy:V,rawComment:q,rawExtraField:K,useWebWorkers:j,transferStreams:X,onstart:G,onprogress:Y,onend:Q,signal:$,encryptionStrength:ee,extendedTimestamp:te,msDosCompatible:re,internalFileAttributes:se,externalFileAttributes:ne,uid:ie,gid:oe,unixMode:ce,setuid:le,setgid:de,sticky:ue,unixExternalUpper:pe,msdosAttributesRaw:fe,msdosAttributes:he,useCompressionStream:we,passThrough:me}=c,ge={lock:n,versionMadeBy:V,zip64:N,directory:!!H,executable:!!Z,filenameUTF8:!0,rawFilename:R,commentUTF8:!0,rawComment:q,rawExtraFieldZip64:S,localExtraFieldZip64Length:x,rawExtraFieldExtendedTimestamp:F,rawExtraFieldNTFS:D,rawExtraFieldUnix:v,rawExtraFieldAES:E,rawExtraField:K,extendedTimestamp:te,msDosCompatible:re,internalFileAttributes:se,externalFileAttributes:ne,diskNumberStart:s,uid:ie,gid:oe,unixMode:ce,setuid:le,setgid:de,sticky:ue,unixExternalUpper:pe,msdosAttributesRaw:fe,msdosAttributes:he};let{signature:ye,uncompressedSize:be}=c,ze=0;me||(be=0);const{writable:Se}=t;if(e){e.chunkSize=ae(o);const r=e.readable,s=e.size,n={options:{codecType:jt,level:_,rawPassword:O,password:W,encryptionStrength:ee,zipCrypto:g&&I,passwordVerification:g&&I&&m>>8&M,signed:!me,compressed:y&&!me,encrypted:g&&!me,useWebWorkers:j,useCompressionStream:we,transferStreams:X},config:o,streamOptions:{signal:$,size:s,onstart:G,onprogress:Y,onend:Q}};try{const e=await yr({readable:r,writable:Se},n);if(ze=e.outputSize,t.size+=ze,me||(be=e.inputSize,ye=e.signature),!L&&ze>=U||!B&&be>=U)throw new p(Vs)}catch(e){throw e.outputSize!==J&&(t.size+=e.outputSize),e}}return(({signature:e,compressedSize:t,uncompressedSize:r,headerInfo:s,dataDescriptorInfo:n},{zip64:i,zipCrypto:o,dataDescriptor:c})=>{const{headerView:l,encrypted:d}=s,{dataDescriptorView:u,dataDescriptorOffset:p}=n;d&&!o||e===J||(dn(l,10,e),c&&dn(u,p,e)),i?c&&(un(u,p+4,a(t)),un(u,p+12,a(r))):(dn(l,14,t),dn(l,18,r),c&&(dn(u,p+4,t),dn(u,p+8,r)))})({signature:ye,compressedSize:ze,uncompressedSize:be,headerInfo:l,dataDescriptorInfo:d},c),P&&await tn(t,A),r.assign(ge,{uncompressedSize:be,compressedSize:ze,lastModDate:w,rawLastModDate:m,creationDate:C,lastAccessDate:T,encrypted:g,zipCrypto:I,size:u+ze,compressionMethod:z,version:b,headerArray:f,headerView:h,signature:ye,extraFieldExtendedTimestampFlag:k,zip64UncompressedSize:B,zip64CompressedSize:L}),ge})(s,D,E,n,e.config,i),g||(x=!1),o.set(t,E),E.filename=t,g){if(await y.all([D.writable.getWriter().close(),b]),await R(),S=!0,F=c.size,await T(),E.diskNumberStart=c.diskNumber,E.offset=en(e,c),w){const t=n.metadataSize;Js(n,e.offset-c.diskOffset),E.size+=n.metadataSize-t}(({rawFilename:e,encrypted:t,zip64:r,localExtraFieldZip64Length:s,signature:n,compressedSize:i,uncompressedSize:o,zip64UncompressedSize:c,zip64CompressedSize:l},d,{dataDescriptor:u})=>{if(u||(t||dn(d,14,n),l||dn(d,18,i),c||dn(d,22,o)),r&&s){const t=X+hn(e)+4;un(d,t,a(o)),un(d,t+8,a(i))}})(E,h.localHeaderView,i),await tn(c,h.localHeaderArray),await(async(e,t,r)=>{const s=t.writable.getWriter();try{await e.pipeTo(new v({async write(e){var t;await s.ready,await s.write(e),t=hn(e),A+=t}}),{preventClose:!0,preventAbort:!0,signal:r})}finally{s.releaseLock()}})(D.readable,c,u),c.size+=D.size,S=!1}else E.diskNumberStart=_,E.offset=N;return e.offset+=E.size,E}catch(r){if(S||x){if(e.hasCorruptedEntries=!0,r)try{r.corruptedEntry=!0}catch{}e.offset+=c.size-F,g&&(e.offset+=A)}throw o.delete(t),r}finally{g&&e.bufferedWrites--,z&&z(),b&&b()}async function R(){e.writerLocked=!0;const{lockWriter:t}=e;e.lockWriter=new y(t=>b=()=>{e.writerLocked=!1,t()}),await t}async function T(){hn(h.localHeaderArray)>c.availableSize&&(c.availableSize=0,await tn(c,new f))}})(e,t,s,{headerInfo:h,dataDescriptorInfo:w,metadataSize:m},n)}catch(r){throw e.files.delete(t),r}return r.assign(u,{name:t,comment:l,extraField:d}),new as(u)})(n,e,t,s),i.add(l),await l}catch(t){throw d&&n.filenames.delete(e),t}finally{i.delete(l);const e=Gs.shift();e?e():Xs--}}remove(e){const{filenames:t,files:r}=this;if("string"==typeof e&&(e=r.get(e)),e&&e.filename!==J){const{filename:s}=e;if(t.has(s)&&r.has(s))return t.delete(s),r.delete(s),!0}return!1}async close(e=new f,r={}){const{pendingAddFileCalls:s,writer:n}=this,{writable:i}=n;if(hn(e)>C)throw new p(Ls);for(;s.size;)await y.allSettled(t.from(s));return await(async(e,r,s)=>{const n=(e=>{let t=0;for(const[,r]of e){const{rawFilename:e,rawExtraFieldAES:s,rawComment:n,rawExtraFieldNTFS:a,rawExtraFieldUnix:i,rawExtraField:o,extendedTimestamp:c,extraFieldExtendedTimestampFlag:l,lastModDate:d,zip64UncompressedSize:u,zip64CompressedSize:h,uncompressedSize:w,compressedSize:m}=r,g=r.offset>=U,y=r.diskNumberStart>=C;let b,z;if(g||y||u||h){const e=4+(u?8:0)+(h?8:0)+(g?8:0)+(y?4:0),t=$s(e);t.uint16(1),t.uint16(e-4),u&&t.uint64(w),h&&t.uint64(m),g&&t.uint64(r.offset),y&&t.uint32(r.diskNumberStart),b=t.array}else b=new f;r.rawExtraFieldZip64=b,r.zip64Offset=g,r.zip64DiskNumberStart=y;const S=sn(d);if(c&&nn(S)){const e=$s(9);e.uint16(H),e.uint16(5),e.uint8(l),e.uint32(S),z=e.array}else z=new f;r.rawExtraFieldExtendedTimestamp=z;const x=hn(b,s,a,i,z,o);if(x>C)throw new p(Ps);t+=46+hn(e,n)+x}return t})(e.files),{cdStartDiskNumber:i,cdStartDiskOffset:o}=await(async(e,r,s)=>{const{files:n,writer:a}=e,i=new f(r);await Ze(a);let o=0,c=0,l=a.diskNumber,d=a.diskOffset;for(const[e,r]of t.from(n.values()).entries()){const{offset:t,rawFilename:u,rawExtraFieldZip64:p,rawExtraFieldAES:h,rawExtraFieldExtendedTimestamp:w,rawExtraFieldNTFS:m,rawExtraFieldUnix:g,rawExtraField:y,rawComment:b,versionMadeBy:z,headerArray:S,headerView:x,zip64UncompressedSize:F,zip64CompressedSize:k,zip64DiskNumberStart:D,zip64Offset:v,internalFileAttributes:E,externalFileAttributes:A,diskNumberStart:R,uncompressedSize:T,compressedSize:M}=r,W=hn(p,h,w,m,g,y),O=46+hn(u,b)+W;o+O-c>a.availableSize&&(await tn(a,i.slice(c,o)),c=o,a.availableSize=0,await tn(a,new f)),0==e&&(l=a.diskNumber,d=a.diskOffset),F||dn(x,18,T),k||dn(x,14,M),(v||D)&&45>r.version&&ln(x,0,45);const _=$s(O);if(_.uint32(N),_.uint16(z),_.bytes(S.subarray(0,24)),_.uint16(W),_.uint16(hn(b)),_.uint16(D?C:R),_.uint16(E),_.uint32(A),_.uint32(v?U:t),_.bytes(u),_.bytes(p),_.bytes(h),_.bytes(w),_.bytes(m),_.bytes(g),_.bytes(y),_.bytes(b),pn(i,_.array,o),o+=O,s.onprogress)try{await s.onprogress(e+1,n.size,new as(r))}catch{}}return await tn(a,c?i.slice(c):i),{cdStartDiskNumber:l,cdStartDiskOffset:d}})(e,n,s);await(async(e,t,r,s)=>{const{writer:n}=e,{cdStartDiskNumber:i,cdStartDiskOffset:o}=s;let{directoryDataLength:c}=s,l=e.files.size,d=i,u=e.offset-o-(i?e.initialOffset:0),h=n.diskNumber;n.availableSize<P&&h++;let w=on(e,r,Vr);if(!(U>u&&U>c&&C>l&&C>h)){if(!1===w)throw new p(Vs);w=!0}const m=hn(t);if(m>C)throw new p(Ls);const g=$s(w?98:P);hn(g.array)+m>n.availableSize&&(n.availableSize=0,await tn(n,new f)),h=n.diskNumber,w&&(g.uint32(L),g.uint64(44),g.uint16(45),g.uint16(45),g.uint32(h),g.uint32(d),g.uint64(l),g.uint64(l),g.uint64(c),g.uint64(u),g.uint32(I),g.uint32(h),g.uint64(a(e.offset)+a(c)-a(n.diskOffset)-a(n.diskNumber?e.initialOffset:0)),g.uint32(h+1),on(e,r,"supportZip64SplitFile",!0)&&(h=C,d=C),l=C,u=U,c=U),g.uint32(B),g.uint16(h),g.uint16(d),g.uint16(l),g.uint16(l),g.uint32(c),g.uint32(u),g.uint16(m),await tn(n,g.array),m&&await tn(n,t)})(e,r,s,{cdStartDiskNumber:i,cdStartDiskOffset:o,directoryDataLength:n})})(this,e,r),on(this,r,hs)||await i.getWriter().close(),n.getData?n.getData():i}}function Js(e,t){const{headerInfo:r}=e;let s,{localHeaderArray:n,extraFieldLength:a}=r,i=64-(t+hn(n))%64;4>i&&(i+=64);const o=new f(i),c=fn(o);ln(c,0,6534),ln(c,2,i-4);const l=n;r.localHeaderArray=n=new f(hn(l)+i),pn(n,l),pn(n,o,hn(l)),s=fn(n),ln(s,28,a+i),r.localHeaderView=s,e.metadataSize+=i}function Qs(e){if(e===J)return new f;{const t=new f(4);fn(t).setUint32(0,e,!0);let r=4;for(;r>1&&0===t[r-1];)r--;return t.subarray(0,r)}}function $s(e){const t=new f(e),r=fn(t);let s=0;return{array:t,uint8:e=>{((e,t,r)=>{e.setUint8(t,r)})(r,s,e),s+=1},uint16:e=>{ln(r,s,e),s+=2},uint32:e=>{dn(r,s,e),s+=4},uint64:e=>{un(r,s,a(e)),s+=8},bytes:e=>{pn(t,e,s),s+=hn(e)},skip:e=>s+=e}}function en(e,t){return e.offset-t.diskOffset-(t.diskNumber?e.initialOffset:0)}async function tn(e,t){const{writable:r}=e,s=r.getWriter();try{await s.ready,e.size+=hn(t),await s.write(t)}finally{s.releaseLock()}}function rn(e){if(e)return(a(e.getTime())+a(116444736e5))*a(1e4)}function sn(e){return i.floor(e.getTime()/1e3)}function nn(e){return e>=Hs&&Zs>=e}function an(e){return i.min(Zs,i.max(Hs,e))}function on(e,t,r,s){const n=t[r]===J?e.options[r]:t[r];return n===J?s:n}function cn(e){return e+5*(i.floor(e/16383)+1)}function ln(e,t,r){e.setUint16(t,r,!0)}function dn(e,t,r){e.setUint32(t,r,!0)}function un(e,t,r){e.setBigUint64(t,r,!0)}function pn(e,t,r){e.set(t,r)}function fn(e){return new m(e.buffer,e.byteOffset,e.byteLength)}function hn(...e){let t=0;return e.forEach(e=>e&&(t+=e.length)),t}function wn({version:e,bitFlag:t,compressionMethod:r,uncompressedSize:s,compressedSize:n,lastModDate:a,rawLastModDate:i,rawFilename:o,zip64CompressedSize:c,zip64UncompressedSize:l,extraFieldLength:d}){const u=$s(26),p=u.array,f=fn(p);if(u.uint16(e),u.uint16(t),u.uint16(r),i===J){const e=new w(1),t=fn(e);ln(t,0,(a.getHours()<<6|a.getMinutes())<<5|a.getSeconds()/2),ln(t,2,(a.getFullYear()-1980<<4|a.getMonth()+1)<<5|a.getDate()),i=e[0]}return u.uint32(i),u.skip(4),c||n!==J?u.uint32(c?U:n):u.skip(4),l||s!==J?u.uint32(l?U:s):u.skip(4),u.uint16(hn(o)),u.uint16(d),{headerArray:p,headerView:f,rawLastModDate:i}}function mn(e,t,r,s,n){let a=0;return t&&(a|=Z),r&&(a|=8),8!=n&&9!=n||(0>e||e>3||(a|=6),e>3&&5>=e&&(a|=4),9==e&&(a|=2)),s&&(a|=1),a}const gn="Entry filename already exists";class yn{constructor(e,t,s,n){const a=this;if(e.root&&n&&n.getChildByName(t))throw new p(gn);s||(s={}),r.assign(a,{fs:e,name:t,data:s.data,options:s.options,id:e.entryIdCounter++,parent:n,children:[],uncompressedSize:s.uncompressedSize||0,passThrough:s.passThrough}),!n&&e.root||(e.entries[a.id]=a),n&&a.parent.children.push(a)}moveTo(e){this.fs.move(this,e)}getFullname(){return this.getRelativeName()}getRelativeName(e=this.fs.root){let t=this.name,r=this.parent;for(;r&&r!=e;)t=(r.name?r.name+"/":"")+t,r=r.parent;return t}isDescendantOf(e){let t=this.parent;for(;t&&t.id!=e.id;)t=t.parent;return!!t}rename(e){const t=this.parent;if(t&&t.getChildByName(e))throw new p(gn);this.name=e}}class bn extends yn{constructor(e,t,r,s){super(e,t,r,s);const n=this;n.Reader=r.Reader,n.Writer=r.Writer,r.getData&&(n.getData=r.getData)}clone(){return new bn(this.fs,this.name,this)}async getData(e,t={}){const r=this;if(!e||e.constructor==r.Writer&&r.data)return r.data;{const s=r.reader=new r.Reader(r.data,t),n=r.data?r.data.uncompressedSize:s.size;await y.all([Ze(s),Ze(e,n)]);const{readable:a}=s;return r.uncompressedSize=s.size,await a.pipeTo(e.writable),e.getData?e.getData():e.writable}}isPasswordProtected(){return!(!this.data||!this.data.encrypted)}async checkPassword(e,t={}){const s=this;if(!s.isPasswordProtected())return!0;try{return await s.data.getData(null,r.assign({},t,{password:e,checkPasswordOnly:!0})),!0}catch(e){if(e.message==et)return!1;throw e}}getText(e,t){return this.getData(new xe(e),t)}getBlob(e,t){return this.getData(new ze(e),t)}getData64URI(e,t){return this.getData(new ye(e),t)}getUint8Array(e){return this.getData(new Be,e)}getWritable(e=new v,t){return this.getData({writable:e},t)}async getArrayBuffer(e){const t=await this.getUint8Array(e);return t.byteOffset||t.byteLength!=t.buffer.byteLength?t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength):t.buffer}replaceBlob(e){r.assign(this,{data:e,Reader:be,Writer:ze,reader:null})}replaceText(e){r.assign(this,{data:e,Reader:Se,Writer:xe,reader:null})}replaceData64URI(e){r.assign(this,{data:e,Reader:ge,Writer:ye,reader:null})}replaceUint8Array(e){r.assign(this,{data:e,Reader:Ne,Writer:Be,reader:null})}replaceReadable(e){r.assign(this,{data:null,Reader:xn(e),Writer:null,reader:null})}}class zn extends yn{constructor(e,t,r,s){super(e,t,r,s),this.directory=!0}clone(e){const t=this,r=new zn(t.fs,t.name,t);return e&&(r.children=t.children.map(t=>{const s=t.clone(e);return s.parent=r,s})),r}addDirectory(e,t){return Rn(this,e,{options:t},!0)}addText(e,t,r={}){return Rn(this,e,{data:t,Reader:Se,Writer:xe,options:r,uncompressedSize:t.length})}addBlob(e,t,r={}){return Rn(this,e,{data:t,Reader:be,Writer:ze,options:r,uncompressedSize:t.size})}addData64URI(e,t,r={}){let s=t.length;for(;"="==t.charAt(s-1);)s--;const n=t.indexOf(",")+1;return Rn(this,e,{data:t,Reader:ge,Writer:ye,options:r,uncompressedSize:i.floor(.75*(s-n))})}addUint8Array(e,t,r={}){return Rn(this,e,{data:t,Reader:Ne,Writer:Be,options:r,uncompressedSize:t.length})}addHttpContent(e,t,r={}){return Rn(this,e,{data:t,Reader:class extends _e{constructor(e){super(e,r)}},options:r})}addReadable(e,t,r={}){return Rn(this,e,{Reader:xn(t),options:r})}addFileSystemEntry(e,t={}){return vn(this,e,t)}addFileSystemHandle(e,t={}){return vn(this,e,t)}addFile(e,t={}){return(t=r.assign({},t)).lastModDate||(t.lastModDate=new o(e.lastModified)),Rn(this,e.name,{data:e,Reader:()=>({readable:e.stream(),size:e.size}),options:t,uncompressedSize:e.size})}addData(e,t){return Rn(this,e,t)}importBlob(e,t){return this.importZip(new be(e),t)}importData64URI(e,t){return this.importZip(new ge(e),t)}importUint8Array(e,t){return this.importZip(new Ne(e),t)}importHttpContent(e,t){return this.importZip(new _e(e,t),t)}importReadable(e,t){return this.importZip({readable:e},t)}exportBlob(e={}){return this.exportZip(new ze(e.mimeType||"application/zip"),e)}exportData64URI(e={}){return this.exportZip(new ye(e.mimeType||"application/zip"),e)}exportUint8Array(e={}){return this.exportZip(new Be,e)}async exportWritable(e=new v,t={}){return await this.exportZip({writable:e},t),e}async importZip(e,t={}){await Ze(e);const s=new Fs(e,t),n=[],a=await s.getEntries();for(const e of a){let s=this;try{const a=e.filename.split("/"),i=a.pop();if(a.forEach(e=>{const t=s;if(s=s.getChildByName(e),s){if(!s.directory)throw new p(gn)}else s=new zn(this.fs,e,{data:null},t),n.push(s)}),e.directory){let t=s;if(i)if(t=s.getChildByName(i),t){if(!t.directory)throw new p(gn)}else t=new zn(this.fs,i,{data:null},s),n.push(t);t==this||t.data||(t.data=e)}else n.push(Rn(s,i,{data:e,Reader:Fn(r.assign({},t)),uncompressedSize:e.uncompressedSize,passThrough:t.passThrough}))}catch(t){try{t.cause={entry:e}}catch{}throw t}}return n}async exportZip(e,s={}){const n=this;(s=r.assign({},s)).bufferedWrite===J&&(s.bufferedWrite=!0);const[a]=await y.all([kn(n,s.readerOptions),Ze(e)]),i=new Ys(e,s);return await(async(e,s,n,a,i)=>{const o=s,l=new c;await async function e(s,c){async function d(c){const d=a.relativePath?c.getRelativeName(o):c.getFullname(),u=c.options||{};let p={};if(c.data instanceof as){const{externalFileAttributes:e,versionMadeBy:t,comment:s,lastModDate:n,creationDate:a,lastAccessDate:i,uncompressedSize:o,encrypted:l,zipCrypto:d,signature:u,compressionMethod:f,extraFieldAES:h}=c.data;if(p={externalFileAttributes:e,versionMadeBy:t,comment:s,lastModDate:n,creationDate:a,lastAccessDate:i},c.passThrough){let e,t;0===f&&(e=0),h&&(t=h.strength),p=r.assign(p,{passThrough:!0,encrypted:l,zipCrypto:d,signature:u,uncompressedSize:o,level:e,encryptionStrength:t,compressionMethod:f})}}await s.add(d,i.get(c),r.assign({},a,p,u,{directory:c.directory,onprogress:async e=>{if(a.onprogress){l.set(d,e);try{await a.onprogress(t.from(l.values()).reduce((e,t)=>e+t),n)}catch{}}}})),await e(s,c)}await(async()=>{if(a.bufferedWrite){const e=(await y.allSettled(c.children.map(d))).find(e=>"rejected"==e.status);if(e)throw e.reason}else for(const e of c.children)await d(e)})()}(e,s)})(i,n,(e=>{let r=0;const s=t.from(e);for(;s.length;){const e=s.pop();r+=e.uncompressedSize||0;for(const t of e.children)s.push(t)}return r})([n]),s,a),await i.close(),e.getData?e.getData():e.writable}getChildByName(e){const t=this.children;for(let r=0;r<t.length;r++){const s=t[r];if(s.name==e)return s}}isPasswordProtected(){const e=this.children;for(let t=0;t<e.length;t++)if(e[t].isPasswordProtected())return!0;return!1}async checkPassword(e,t={}){const r=this.children;return!(await y.all(r.map(r=>r.checkPassword(e,t)))).includes(!1)}}const Sn={FS:class{constructor(){An(this)}get children(){return this.root.children}remove(e){Dn(e);const t=[e];for(;t.length;){const e=t.pop();this.entries[e.id]=null;for(const r of e.children)t.push(r)}e.parent=J}move(e,t){if(e==this.root)throw new p("Root directory cannot be moved");if(!t.directory)throw new p("Target entry is not a directory");if(t.isDescendantOf(e))throw new p("Entry is a ancestor of target entry");if(e!=t){const r=t.getChildByName(e.name);if(r){if(r!=e)throw new p(gn)}else Dn(e),e.parent=t,t.children.push(e),((e,t)=>{const r=[t];for(;r.length;){const t=r.pop();e.entries[t.id]=t;for(const e of t.children)r.push(e)}})(this,e)}}find(e){const t=e.split("/");let r=this.root;for(let e=0;r&&e<t.length;e++)r=r.getChildByName(t[e]);return r||(r=this.entries.find(t=>t&&(t==this.root||t.isDescendantOf(this.root))&&t.getRelativeName()==e)),r}getById(e){return this.entries[e]}getChildByName(e){return this.root.getChildByName(e)}addDirectory(e,t){return this.root.addDirectory(e,t)}addText(e,t,r){return this.root.addText(e,t,r)}addBlob(e,t,r){return this.root.addBlob(e,t,r)}addData64URI(e,t,r){return this.root.addData64URI(e,t,r)}addUint8Array(e,t,r){return this.root.addUint8Array(e,t,r)}addHttpContent(e,t,r){return this.root.addHttpContent(e,t,r)}addReadable(e,t,r){return this.root.addReadable(e,t,r)}addFileSystemEntry(e,t){return this.root.addFileSystemEntry(e,t)}addFileSystemHandle(e,t){return this.root.addFileSystemHandle(e,t)}addFile(e,t){return this.root.addFile(e,t)}addData(e,t){return this.root.addData(e,t)}importBlob(e,t){return An(this),this.root.importBlob(e,t)}importData64URI(e,t){return An(this),this.root.importData64URI(e,t)}importUint8Array(e,t){return An(this),this.root.importUint8Array(e,t)}importHttpContent(e,t){return An(this),this.root.importHttpContent(e,t)}importReadable(e,t){return An(this),this.root.importReadable(e,t)}importZip(e,t){return An(this),this.root.importZip(e,t)}exportBlob(e){return this.root.exportBlob(e)}exportData64URI(e){return this.root.exportData64URI(e)}exportUint8Array(e){return this.root.exportUint8Array(e)}exportWritable(e,t){return this.root.exportWritable(e,t)}exportZip(e,t){return this.root.exportZip(e,t)}isPasswordProtected(){return this.root.isPasswordProtected()}checkPassword(e,t){return this.root.checkPassword(e,t)}},ZipDirectoryEntry:zn,ZipFileEntry:bn};function xn(e){let t;return()=>{if(t)throw new p("Readable stream already consumed");return t=!0,{readable:e}}}function Fn(e){return class extends we{constructor(e,t={}){super(),this.entry=e,this.options=t}async init(){const t=this;t.size=t.entry.uncompressedSize;const s=await t.entry.getData(new ze,r.assign({},e,t.options));t.data=s,t.blobReader=new be(s),super.init()}readUint8Array(e,t){return this.blobReader.readUint8Array(e,t)}}}async function kn(e,t){const r=[],s=[e],n=new c;for(;s.length;){const e=s.pop();for(const t of e.children)t.directory?s.push(t):r.push(t)}return await y.all(r.map(async e=>{const r=e.reader=new e.Reader(e.data,t);n.set(e,r);try{await Ze(r)}catch(t){try{t.entryId=e.id,t.cause={entry:e}}catch{}throw t}r.size!==J&&(e.uncompressedSize=r.size)})),n}function Dn(e){if(e.parent){const t=e.parent.children;t.forEach((r,s)=>{r.id==e.id&&t.splice(s,1)})}}function vn(e,t,s){return async function e(t,n,a){if(n)try{if((n.isFile||n.isDirectory)&&(n=await En(n)),"file"==n.kind){const e=await n.getFile();a.push(t.addData(e.name,{Reader:()=>({readable:e.stream(),size:e.size}),options:r.assign({},{lastModDate:new o(e.lastModified)},s),uncompressedSize:e.size}))}else if("directory"==n.kind){const r=t.addDirectory(n.name);a.push(r);for await(const t of n.values())await e(r,t,a)}}catch(e){const t=e.message+(n?" ("+n.name+")":"");throw new p(t,{cause:e})}return a}(e,t,[])}async function En(e){const t={name:e.name};if(e.isFile&&(t.kind="file",t.getFile=()=>new y((t,r)=>e.file(t,r))),e.isDirectory){t.kind="directory";const r=await(async e=>{const t=[];function r(e,s,n){e.readEntries(async a=>{if(a.length){for(const e of a)t.push(await En(e));r(e,s,n)}else s(t)},n)}return await new y((t,s)=>r(e.createReader(),t,s)),{[Symbol.iterator](){let e=0;return{next(){const r={value:t[e],done:e==t.length};return e++,r}}}}})(e);t.values=()=>r}return t}function An(e){e.entries=[],e.entryIdCounter=0,e.root=new zn(e)}function Rn(e,t,r,s){if(e.directory)return s?new zn(e.fs,t,r,e):new bn(e.fs,t,r,e);throw new p("Parent entry is not a directory")}e.fs=Sn});
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).zip={})})(this,function(e){"use strict";const{Array:t,Object:r,String:s,Number:n,BigInt:a,Math:i,Date:o,Map:c,Set:l,Response:d,URL:u,Error:p,Uint8Array:f,Uint16Array:h,Uint32Array:w,DataView:m,Blob:g,Promise:y,TextEncoder:b,TextDecoder:z,document:S,crypto:x,btoa:F,TransformStream:k,ReadableStream:D,WritableStream:v,CompressionStream:E,DecompressionStream:A,navigator:R,Worker:T}="undefined"!=typeof globalThis?globalThis:this||self,C=4294967295,U=65535,M=255,W=67324752,O=134695760,_=O,N=33639248,B=101010256,L=101075792,I=117853008,P=22,Z=21589,H=2048,V=16384,q=2048,K=1024,j="/",X=30,G=new o(2107,11,31),Y=new o(1980,0,1),J=void 0,Q=1/0,$="undefined",ee="function";let te=2;try{typeof R!=$&&R.hardwareConcurrency&&(te=R.hardwareConcurrency)}catch{}const re={workerURI:"./core/web-worker-wasm.js",wasmURI:"./core/streams/zlib-wasm/zlib-streams.wasm",chunkSize:65536,maxWorkers:te,terminateWorkerTimeout:5e3,workerStarvationTimeout:5e3,useWebWorkers:!0,useCompressionStream:!0,CompressionStream:typeof E!=$&&E,DecompressionStream:typeof A!=$&&A},se=r.assign({},re);function ne(){return se}function ae(e){return i.max(e.chunkSize,64)}const ie="HTTP error ",oe="HTTP Range not supported",ce="Content-Range",le="Range",de="GET",ue="bytes",pe=65536,fe="writable";class he{constructor(){this.size=0}init(){this.initialized=!0}}class we extends he{get readable(){const e=this,{chunkSize:t=pe}=e,r=new D({start(){this.chunkOffset=0},async pull(s){const{offset:n=0,size:a,diskNumberStart:o}=r,{chunkOffset:c}=this,l=a===J?t:i.min(t,a-c),d=await Ve(e,n+c,l,o);s.enqueue(d),c+t>a||a===J&&!d.length&&l?s.close():this.chunkOffset+=t}});return r}}class me extends he{constructor(){super();const e=this,t=new v({write(t){if(!e.initialized)throw new p("Writer not initialized");return e.writeUint8Array(t)}});r.defineProperty(e,fe,{get:()=>t})}writeUint8Array(){}}class ge extends we{constructor(e){super();let t=e.length;for(;"="==e.charAt(t-1);)t--;const s=e.indexOf(",")+1;r.assign(this,{dataURI:e,dataStart:s,size:i.floor(.75*(t-s))})}readUint8Array(e,t){const{dataStart:r,dataURI:s}=this,n=new f(t),a=4*i.floor(e/3),o=atob(s.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++)n[e-c]=o.charCodeAt(e),l++;return l<n.length?n.subarray(0,l):n}}class ye extends me{constructor(e){super(),r.assign(this,{data:"data:"+(e||"")+";base64,",pending:[]})}writeUint8Array(e){const t=this;let r,n=t.pending;const a=t.pending.length;for(t.pending="",r=0;r<3*i.floor((a+e.length)/3)-a;r++)n+=s.fromCharCode(e[r]);for(;r<e.length;r++)t.pending+=s.fromCharCode(e[r]);n.length>2?t.data+=F(n):t.pending=n+t.pending}getData(){return this.data+F(this.pending)}}class be extends we{constructor(e){super(),r.assign(this,{blob:e,size:e.size})}async readUint8Array(e,t){const r=this,s=e+t,n=e||s<r.size?r.blob.slice(e,s):r.blob;let a=await n.arrayBuffer();return a.byteLength>t&&(a=a.slice(e,s)),new f(a)}}class ze extends he{constructor(e){super();const t=this,s=new k,n=[];e&&n.push(["Content-Type",e]),r.defineProperty(t,fe,{get:()=>s.writable}),t.blob=new d(s.readable,{headers:n}).blob(),t.blob.catch(()=>{})}getData(){return this.blob}}class Se extends be{constructor(e){super(new g([e],{type:"text/plain"}))}}class xe extends ze{constructor(e){super(e),r.assign(this,{encoding:e,utf8:!e||"utf-8"==e.toLowerCase()})}async getData(){const{encoding:e,utf8:t}=this,s=await super.getData();if(s.text&&t)return s.text();{const t=new FileReader;return new y((n,a)=>{r.assign(t,{onload:({target:e})=>n(e.result),onerror:()=>a(t.error)}),t.readAsText(s,e)})}}}class Fe extends we{constructor(e,t){super(),De(this,e,t)}async init(){await ve(this,We,Te),super.init()}readUint8Array(e,t){return Ee(this,e,t,We,Te)}}class ke extends we{constructor(e,t){super(),De(this,e,t)}async init(){await ve(this,Oe,Ce),super.init()}readUint8Array(e,t){return Ee(this,e,t,Oe,Ce)}}function De(e,t,s){const{preventHeadRequest:n,useRangeHeader:a,forceRangeRequests:i,combineSizeEocd:o,fetch:c}=s;delete(s=r.assign({},s)).preventHeadRequest,delete s.useRangeHeader,delete s.forceRangeRequests,delete s.combineSizeEocd,delete s.useXHR,delete s.fetch,r.assign(e,{url:t,options:s,preventHeadRequest:n,useRangeHeader:a,forceRangeRequests:i,combineSizeEocd:o,fetch:c})}async function ve(e,t,r){const{url:s,preventHeadRequest:a,useRangeHeader:i,forceRangeRequests:o,combineSizeEocd:c}=e;if((e=>{const{baseURI:t}=ne(),{protocol:r}=new u(e,t);return"http:"==r||"https:"==r})(s)&&(i||o)&&(void 0===a||a)){const s=await t(de,e,Ae(e,c?-22:void 0)),a=s.headers.get("Accept-Ranges");if(!(o||a&&a.toLowerCase()==ue))throw new p(oe);{if(c){const t=new f(await s.arrayBuffer());206==s.status&&t.length==P&&(e.eocdCache=t)}let a;const i=s.headers.get(ce);if(i){const e=i.trim().split(/\s*\/\s*/);if(e.length){const t=e[1];t&&"*"!=t&&(a=n(t))}}a===J?await Me(e,t,r):e.size=a}}else await Me(e,t,r)}async function Ee(e,t,r,s,a){const{useRangeHeader:i,forceRangeRequests:o,eocdCache:c,size:l,options:d}=e;if(i||o){if(c&&t==l-P&&r==P)return c;if(l>t&&0!==r){t+r>l&&(r=l-t);const a=await s(de,e,Ae(e,t,r));if(206!=a.status)throw new p(oe);const i=a.headers.get(ce);if(i){const e=n(i.trim().split(/[\s-]+/)[1]);if(!n.isNaN(e)&&e!=t)throw new p(oe)}const o=new f(await a.arrayBuffer());if(o.length!=r)throw new p(oe);return o}return new f}{const{data:s}=e;return s||await a(e,d),new f(e.data.subarray(t,t+r))}}function Ae(e,t=0,s=1){return r.assign({},Re(e),{[le]:ue+"="+(0>t?t:t+"-"+(t+s-1))})}function Re({options:e}){const{headers:t}=e;if(t)return Symbol.iterator in t?r.fromEntries(t):t}async function Te(e){await Ue(e,We)}async function Ce(e){await Ue(e,Oe)}async function Ue(e,t){const r=await t(de,e,Re(e));e.data=new f(await r.arrayBuffer()),e.size=e.data.length}async function Me(e,t,r){if(e.preventHeadRequest)await r(e,e.options);else{const s=await t("HEAD",e,Re(e)),a=s.headers.get("Content-Length");a&&!s.headers.get("Content-Encoding")?e.size=n(a):await r(e,e.options)}}async function We(e,{fetch:t=fetch,options:s,url:n},a){const i=await t(n,r.assign({},s,{method:e,headers:a}));if(400>i.status)return i;throw 416==i.status?new p(oe):new p(ie+(i.statusText||i.status))}function Oe(e,{url:t},s){return new y((n,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)}),n({status:i.status,arrayBuffer:()=>i.response,headers:new c(e)})}else a(416==i.status?new p(oe):new p(ie+(i.statusText||i.status)))},!1),i.addEventListener("error",e=>a(e.detail?e.detail.error:new p("Network error")),!1),i.open(e,t),s)for(const e of r.entries(s))i.setRequestHeader(e[0],e[1]);i.responseType="arraybuffer",i.send()})}class _e extends we{constructor(e,t={}){super(),r.assign(this,{url:e,reader:t.useXHR&&!t.fetch?new ke(e,t):new Fe(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 Ne extends we{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)}}class Be extends me{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 s=t.array;t.array=new f(e),t.array.set(s)}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)}}class Le extends we{constructor(e){super(),this.readers=e}async init(){const e=this,{readers:t}=e;e.lastDiskNumber=0,e.lastDiskOffset=0,await y.all(t.map(async(r,s)=>{await He(r),s!=t.length-1&&(e.lastDiskOffset+=r.size),e.size+=r.size})),super.init()}async readUint8Array(e,t,r=0){const s=this,{readers:n}=this;let a,o=r;-1==o&&(o=n.length-1);let c=e;for(;n[o]&&c>=n[o].size;)c-=n[o].size,o++;const l=n[o];if(l){const n=l.size;if(c+t>n){const i=n-c;a=new f(t);const o=await Ve(l,c,i);a.set(o,0);const d=await s.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 Ve(l,c,t)}else a=new f;return s.lastDiskNumber=i.max(o,s.lastDiskNumber),a}}class Ie extends he{constructor(e,t=4294967295){super();const s=this;let n,a,i;r.assign(s,{diskNumber:0,diskOffset:0,size:0,maxSize:t,availableSize:t});const o=new v({async write(t){const{availableSize:r}=s;if(i)t.length<r?await c(t):(await c(t.subarray(0,r)),await l(),s.diskOffset+=n.size,s.diskNumber++,i=null,s.availableSize=s.maxSize,t.length>r&&await this.write(t.subarray(r)));else{const{value:r,done:o}=await e.next();if(o&&!r)throw new p("Writer iterator completed too soon");n=r,n.size=0,n.maxSize&&(s.maxSize=n.maxSize),s.availableSize=s.maxSize,await He(n),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),n.size+=t,s.availableSize-=t)}async function l(){await i.close()}r.defineProperty(s,fe,{get:()=>o})}}class Pe{constructor(e){return t.isArray(e)&&(e=new Le(e)),e instanceof D&&(e={readable:e}),e}}class Ze{constructor(e){return e.writable===J&&typeof e.next==ee&&(e=new Ie(e)),e instanceof v&&(e={writable:e}),e.size===J&&(e.size=0),e instanceof Ie||r.assign(e,{diskNumber:0,diskOffset:0,availableSize:Q,maxSize:Q}),e}}async function He(e,t){if(!e.init||e.initialized)return y.resolve();await e.init(t)}function Ve(e,t,r,s){return e.readUint8Array(t,r,s)}const qe=[];for(let e=0;256>e;e++){let t=e;for(let e=0;8>e;e++)1&t?t=t>>>1^3988292384:t>>>=1;qe[e]=t}class Ke{constructor(e){this.crc=e||-1}append(e){let t=0|this.crc;for(let r=0,s=0|e.length;s>r;r++)t=t>>>8^qe[255&(t^e[r])];this.crc=t}get(){return~this.crc}}class je extends k{constructor(){let e;const t=new Ke;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 Xe(e){if(typeof b==$){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 b).encode(e)}const Ge={concat(e,t){if(0===e.length||0===t.length)return e.concat(t);const r=e[e.length-1],s=Ge.getPartial(r);return 32===s?e.concat(t):Ge._shiftRight(t,s,0|r,e.slice(0,e.length-1))},bitLength(e){const t=e.length;if(0===t)return 0;const r=e[t-1];return 32*(t-1)+Ge.getPartial(r)},clamp(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]=Ge.partial(t,e[r-1]&2147483648>>t-1,1)),e},partial:(e,t,r)=>32===e?t:(r?0|t:t<<32-e)+1099511627776*e,getPartial:e=>i.round(e/1099511627776)||32,_shiftRight(e,t,r,s){for(void 0===s&&(s=[]);t>=32;t-=32)s.push(r),r=0;if(0===t)return s.concat(e);for(let n=0;n<e.length;n++)s.push(r|e[n]>>>t),r=e[n]<<32-t;const n=e.length?e[e.length-1]:0,a=Ge.getPartial(n);return s.push(Ge.partial(t+a&31,t+a>32?r:s.pop(),1)),s}},Ye={bytes:{fromBits(e){const t=Ge.bitLength(e)/8,r=new f(t);let s;for(let n=0;t>n;n++)3&n||(s=e[n/4]),r[n]=s>>>24,s<<=8;return r},toBits(e){const t=[];let r,s=0;for(r=0;r<e.length;r++)s=s<<8|e[r],3&~r||(t.push(s),s=0);return 3&r&&t.push(Ge.partial(8*(3&r),s)),t}}},Je=class{constructor(e){const t=this;t.blockSize=512,t._init=[1732584193,4023233417,2562383102,271733878,3285377520],t._key=[1518500249,1859775393,2400959708,3395469782],e?(t._h=e._h.slice(0),t._buffer=e._buffer.slice(0),t._length=e._length):t.reset()}reset(){const e=this;return e._h=e._init.slice(0),e._buffer=[],e._length=0,e}update(e){const t=this;"string"==typeof e&&(e=Ye.utf8String.toBits(e));const r=t._buffer=Ge.concat(t._buffer,e),s=t._length,n=t._length=s+Ge.bitLength(e);if(n>9007199254740991)throw new p("Cannot hash more than 2^53 - 1 bits");const a=new w(r);let i=0;for(let e=t.blockSize+s-(t.blockSize+s&t.blockSize-1);n>=e;e+=t.blockSize)t._block(a.subarray(16*i,16*(i+1))),i+=1;return r.splice(0,16*i),t}finalize(){const e=this;let t=e._buffer;const r=e._h;t=Ge.concat(t,[Ge.partial(1,1)]);for(let e=t.length+2;15&e;e++)t.push(0);for(t.push(i.floor(e._length/4294967296)),t.push(0|e._length);t.length;)e._block(t.splice(0,16));return e.reset(),r}_f(e,t,r,s){return e>19?e>39?e>59?e>79?void 0:t^r^s:t&r|t&s|r&s:t^r^s:t&r|~t&s}_S(e,t){return t<<e|t>>>32-e}_block(e){const r=this,s=r._h,n=t(80);for(let t=0;16>t;t++)n[t]=e[t];let a=s[0],o=s[1],c=s[2],l=s[3],d=s[4];for(let e=0;79>=e;e++){16>e||(n[e]=r._S(1,n[e-3]^n[e-8]^n[e-14]^n[e-16]));const t=r._S(5,a)+r._f(e,o,c,l)+d+n[e]+r._key[i.floor(e/20)]|0;d=l,l=c,c=r._S(30,o),o=a,a=t}s[0]=s[0]+a|0,s[1]=s[1]+o|0,s[2]=s[2]+c|0,s[3]=s[3]+l|0,s[4]=s[4]+d|0}},Qe={importKey:e=>new Qe.hmacSha1(Ye.bytes.toBits(e)),pbkdf2(e,t,r,s){if(r=r||1e4,0>s||0>r)throw new p("invalid params to pbkdf2");const n=1+(s>>5)<<2;let a,i,o,c,l;const d=new ArrayBuffer(n),u=new m(d);let f=0;const h=Ge;for(t=Ye.bytes.toBits(t),l=1;(n||1)>f;l++){for(a=i=e.encrypt(h.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;(n||1)>f&&o<a.length;o++)u.setInt32(f,a[o]),f+=4}return d.slice(0,s/8)},hmacSha1:class{constructor(e){const t=this,r=t._hash=Je,s=[[],[]];t._baseHash=[new r,new r];const n=t._baseHash[0].blockSize/32;e.length>n&&(e=(new r).update(e).finalize());for(let t=0;n>t;t++)s[0][t]=909522486^e[t],s[1][t]=1549556828^e[t];t._baseHash[0].update(s[0]),t._baseHash[1].update(s[1]),t._resultHash=new r(t._baseHash[0])}reset(){const e=this;e._resultHash=new e._hash(e._baseHash[0]),e._updated=!1}update(e){this._updated=!0,this._resultHash.update(e)}digest(){const e=this,t=e._resultHash.finalize(),r=new e._hash(e._baseHash[1]).update(t).finalize();return e.reset(),r}encrypt(e){if(this._updated)throw new p("encrypt on already updated hmac called!");return this.update(e),this.digest(e)}}},$e=typeof x!=$&&typeof x.getRandomValues==ee,et="Invalid password",tt="Invalid signature",rt="zipjs-abort-check-password";function st(e){if($e)return x.getRandomValues(e);throw new p("Crypto API not supported")}const nt=16,at={name:"PBKDF2"},it=r.assign({hash:{name:"HMAC"}},at),ot=r.assign({iterations:1e3,hash:{name:"SHA-1"}},at),ct=["deriveBits"],lt=[8,12,16],dt=[16,24,32],ut=10,pt=[0,0,0,0],ft=typeof x!=$,ht=ft&&x.subtle,wt=ft&&typeof ht!=$,mt=Ye.bytes,gt=class{constructor(e){const t=this;t._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],t._tables[0][0][0]||t._precompute();const r=t._tables[0][4],s=t._tables[1],n=e.length;let a,i,o,c=1;if(4!==n&&6!==n&&8!==n)throw new p("invalid aes key size");for(t._key=[i=e.slice(0),o=[]],a=n;4*n+28>a;a++){let e=i[a-1];(a%n===0||8===n&&a%n===4)&&(e=r[e>>>24]<<24^r[e>>16&255]<<16^r[e>>8&255]<<8^r[255&e],a%n===0&&(e=e<<8^e>>>24^c<<24,c=c<<1^283*(c>>7))),i[a]=i[a-n]^e}for(let e=0;a;e++,a--){const t=i[3&e?a:a-4];o[e]=4>=a||4>e?t:s[0][r[t>>>24]]^s[1][r[t>>16&255]]^s[2][r[t>>8&255]]^s[3][r[255&t]]}}encrypt(e){return this._crypt(e,0)}decrypt(e){return this._crypt(e,1)}_precompute(){const e=this._tables[0],t=this._tables[1],r=e[4],s=t[4],n=[],a=[];let i,o,c,l;for(let e=0;256>e;e++)a[(n[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,s[a]=d,l=n[c=n[o=n[d]]];let u=16843009*l^65537*c^257*o^16843008*d,p=257*n[a]^16843008*a;for(let r=0;4>r;r++)e[r][d]=p=p<<24^p>>>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)}_crypt(e,t){if(4!==e.length)throw new p("invalid aes block size");const r=this._key[t],s=r.length/4-2,n=[0,0,0,0],a=this._tables[t],i=a[0],o=a[1],c=a[2],l=a[3],d=a[4];let u,f,h,w=e[0]^r[0],m=e[t?3:1]^r[1],g=e[2]^r[2],y=e[t?1:3]^r[3],b=4;for(let e=0;s>e;e++)u=i[w>>>24]^o[m>>16&255]^c[g>>8&255]^l[255&y]^r[b],f=i[m>>>24]^o[g>>16&255]^c[y>>8&255]^l[255&w]^r[b+1],h=i[g>>>24]^o[y>>16&255]^c[w>>8&255]^l[255&m]^r[b+2],y=i[y>>>24]^o[w>>16&255]^c[m>>8&255]^l[255&g]^r[b+3],b+=4,w=u,m=f,g=h;for(let e=0;4>e;e++)n[t?3&-e:e]=d[w>>>24]<<24^d[m>>16&255]<<16^d[g>>8&255]<<8^d[255&y]^r[b++],u=w,w=m,m=g,g=y,y=u;return n}},yt=class{constructor(e,t){this._prf=e,this._initIv=t,this._iv=t}reset(){this._iv=this._initIv}update(e){return this.calculate(this._prf,e,this._iv)}incWord(e){if(255&~(e>>24))e+=1<<24;else{let t=e>>16&255,r=e>>8&255,s=255&e;255===t?(t=0,255===r?(r=0,255===s?s=0:++s):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=s}return e}incCounter(e){0===(e[0]=this.incWord(e[0]))&&(e[1]=this.incWord(e[1]))}calculate(e,t,r){let s;if(!(s=t.length))return[];const n=Ge.bitLength(t);for(let n=0;s>n;n+=4){this.incCounter(r);const s=e.encrypt(r);t[n]^=s[0],t[n+1]^=s[1],t[n+2]^=s[2],t[n+3]^=s[3]}return Ge.clamp(t,n)}},bt=Qe.hmacSha1;let zt=ft&&wt&&typeof ht.importKey==ee,St=ft&&wt&&typeof ht.deriveBits==ee;class xt extends k{constructor({password:e,rawPassword:t,encryptionStrength:s,checkPasswordOnly:n}){super({start(){r.assign(this,{ready:new y(e=>this.resolveReady=e),password:vt(e,t),strength:s-1,pending:new f})},async transform(e,t){const r=this,{password:s,strength:a,resolveReady:i,ready:o}=r;s?(await(async(e,t,r,s)=>{const n=await Dt(e,t,r,At(s,0,lt[t])),a=At(s,lt[t]);if(n[0]!=a[0]||n[1]!=a[1])throw new p(et)})(r,a,s,At(e,0,lt[a]+2)),e=At(e,lt[a]+2),n?t.error(new p(rt)):i()):await o;const c=new f(e.length-ut-(e.length-ut)%nt);t.enqueue(kt(r,e,c,0,ut,!0))},async flush(e){const{ctr:t,hmac:r,pending:s,ready:n}=this;if(r&&t){await n;const a=At(s,0,s.length-ut),i=At(s,s.length-ut);let o=new f;if(a.length){const e=Tt(mt,a);r.update(e);const s=t.update(e);o=Rt(mt,s)}const c=At(Rt(mt,r.digest()),0,ut);let l=s.length<ut?1:0;for(let e=0;ut>e;e++)l|=c[e]^i[e];if(l)throw new p(tt);e.enqueue(o)}}})}}class Ft extends k{constructor({password:e,rawPassword:t,encryptionStrength:s}){let n;super({start(){r.assign(this,{ready:new y(e=>this.resolveReady=e),password:vt(e,t),strength:s-1,pending:new f})},async transform(e,t){const r=this,{password:s,strength:n,resolveReady:a,ready:i}=r;let o=new f;s?(o=await(async(e,t,r)=>{const s=st(new f(lt[t]));return Et(s,await Dt(e,t,r,s))})(r,n,s),a()):await i;const c=new f(o.length+e.length-e.length%nt);c.set(o,0),t.enqueue(kt(r,e,c,o.length,0))},async flush(e){const{ctr:t,hmac:r,pending:s,ready:a}=this;if(r&&t){await a;let i=new f;if(s.length){const e=t.update(Tt(mt,s));r.update(e),i=Rt(mt,e)}n.signature=Rt(mt,r.digest()).slice(0,ut),e.enqueue(Et(i,n.signature))}}}),n=this}}function kt(e,t,r,s,n,a){const{ctr:i,hmac:o,pending:c}=e;c.length&&(t=Et(c,t));const l=t.length-n;let d;for(r=((e,t)=>{if(t&&t>e.length){const r=e;(e=new f(t)).set(r,0)}return e})(r,s+(l-l%nt)),d=0;l-nt>=d;d+=nt){const e=Tt(mt,At(t,d,d+nt));a&&o.update(e);const n=i.update(e);a||o.update(n),r.set(Rt(mt,n),d+s)}return e.pending=At(t,d),r}async function Dt(e,s,n,a){e.password=null;const i=await(async(e,t,r,s,n)=>{if(!zt)return Qe.importKey(t);try{return await ht.importKey("raw",t,r,!1,n)}catch{return zt=!1,Qe.importKey(t)}})(0,n,it,0,ct),o=await(async(e,t,r)=>{if(!St)return Qe.pbkdf2(t,e.salt,ot.iterations,r);try{return await ht.deriveBits(e,t,r)}catch{return St=!1,Qe.pbkdf2(t,e.salt,ot.iterations,r)}})(r.assign({salt:a},ot),i,8*(2*dt[s]+2)),c=new f(o),l=Tt(mt,At(c,0,dt[s])),d=Tt(mt,At(c,dt[s],2*dt[s])),u=At(c,2*dt[s]);return r.assign(e,{keys:{key:l,authentication:d,passwordVerification:u},ctr:new yt(new gt(l),t.from(pt)),hmac:new bt(d)}),u}function vt(e,t){return t===J?Xe(e):t}function Et(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 At(e,t,r){return e.subarray(t,r)}function Rt(e,t){return e.fromBits(t)}function Tt(e,t){return e.toBits(t)}class Ct extends k{constructor({password:e,rawPassword:t,passwordVerification:s,checkPasswordOnly:n}){super({start(){r.assign(this,{password:e,rawPassword:t,passwordVerification:s}),Ot(this,e,t)},transform(e,t){const r=this;if(r.password||r.rawPassword){const t=Mt(r,e.subarray(0,12));if(r.password=r.rawPassword=null,0!=(t.at(-1)^r.passwordVerification))throw new p(et);e=e.subarray(12)}n?t.error(new p(rt)):t.enqueue(Mt(r,e))}})}}class Ut extends k{constructor({password:e,rawPassword:t,passwordVerification:s}){super({start(){r.assign(this,{password:e,rawPassword:t,passwordVerification:s}),Ot(this,e,t)},transform(e,t){const r=this;let s,n;if(r.password||r.rawPassword){r.password=r.rawPassword=null;const t=st(new f(12));t[11]=r.passwordVerification,s=new f(e.length+t.length),s.set(Wt(r,t),0),n=12}else s=new f(e.length),n=0;s.set(Wt(r,e),n),t.enqueue(s)}})}}function Mt(e,t){const r=new f(t.length);for(let s=0;s<t.length;s++)r[s]=Nt(e)^t[s],_t(e,r[s]);return r}function Wt(e,t){const r=new f(t.length);for(let s=0;s<t.length;s++)r[s]=Nt(e)^t[s],_t(e,t[s]);return r}function Ot(e,t,s){const n=[305419896,591751049,878082192];if(r.assign(e,{keys:n,crcKey0:new Ke(n[0]),crcKey2:new Ke(n[2])}),s)for(let t=0;t<s.length;t++)_t(e,s[t]);else for(let r=0;r<t.length;r++)_t(e,t.charCodeAt(r))}function _t(e,t){let[,r]=e.keys;e.crcKey0.append([t]);const s=~e.crcKey0.get();r=Lt(i.imul(Lt(r+Bt(s)),134775813)+1),e.crcKey2.append([r>>>24]);const n=~e.crcKey2.get();e.keys=[s,r,n]}function Nt(e){const t=2|e.keys[2];return Bt(i.imul(t,1^t)>>>8)}function Bt(e){return 255&e}function Lt(e){return 4294967295&e}const It="Invalid uncompressed size";class Pt extends k{constructor(e,{chunkSize:t,CompressionStreamZlib:r,CompressionStream:s}){super({});const{compressed:n,encrypted:a,useCompressionStream:i,zipCrypto:o,signed:c,level:l}=e,d=this;let u,p,f=super.readable;a&&!o||!c||(u=new je,f=qt(f,u)),n&&(f=Vt(f,i,{level:l,chunkSize:t},s,r,s)),a&&(o?f=qt(f,new Ut(e)):(p=new Ft(e),f=qt(f,p))),Ht(d,f,()=>{let e;a&&!o&&(e=p.signature),a&&!o||!c||(e=new m(u.value.buffer).getUint32(0)),d.signature=e})}}class Zt extends k{constructor(e,{chunkSize:t,DecompressionStreamZlib:r,DecompressionStream:s}){super({});const{zipCrypto:n,encrypted:a,signed:i,signature:o,compressed:c,useCompressionStream:l,deflate64:d}=e;let u,f,h=super.readable;a&&(n?h=qt(h,new Ct(e)):(f=new xt(e),h=qt(h,f))),c&&(h=Vt(h,l,{chunkSize:t,deflate64:d},s,r,s),h=(e=>{const t=e.getReader();return new D({async pull(e){let r;try{r=await t.read()}catch(e){if(e&&e.message)throw e;const t=new p("Invalid compressed data");throw t.cause=e,t}const{value:s,done:n}=r;n?e.close():e.enqueue(s)},cancel:e=>t.cancel(e)})})(h)),a&&!n||!i||(u=new je,h=qt(h,u)),Ht(this,h,()=>{if((!a||n)&&i){const e=new m(u.value.buffer);if(o!=e.getUint32(0,!1))throw new p(tt)}})}}function Ht(e,t,s){t=qt(t,new k({flush:s})),r.defineProperty(e,"readable",{get:()=>t})}function Vt(e,t,r,s,n,a){const i=t&&s?s:n||a,o=r.deflate64?"deflate64-raw":"deflate-raw";let c;try{c=new i(o,r)}catch(e){if(!t)throw e;if(n)c=new n(o,r);else{if(!a)throw e;c=new a(o,r)}}return((e,t)=>{const r=t.writable.getWriter(),s=e.getReader();return(async()=>{try{for(;;){await r.ready;const e=await s.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{}})(s,e)}})(),t.readable})(e,c)}function qt(e,t){return e.pipeThrough(t)}const Kt="data",jt="deflate",Xt="inflate";class Gt extends k{constructor(e,t){super({});const s=this,{codecType:n}=e;let a;n.startsWith(jt)?a=Pt:n.startsWith(Xt)&&(a=Zt),s.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(s,{inputSize:i})}}),d=new k({transform(t,r){if(t&&t.length&&(r.enqueue(t),s.outputSize+=t.length,e.outputSize!==J&&s.outputSize>e.outputSize))throw new p(It)},flush(){const{signature:e}=o;r.assign(s,{signature:e,inputSize:i})}});r.defineProperty(s,"readable",{get:()=>c.pipeThrough(l).pipeThrough(o).pipeThrough(d)})}}class Yt extends k{constructor(e){let t;1>e&&(e=65536),super({transform:(r,s)=>{if(t){const e=new f(t.length+r.length);e.set(t),e.set(r,t.length),r=e,t=null}let n=0;for(;r.length-n>e;)s.enqueue(r.slice(n,n+e)),n+=e;t=n?r.slice(n):r},flush(e){t&&t.length&&e.enqueue(t)}})}}const Jt={type:"module"},Qt="error";let $t,er,tr,rr,sr=!0;try{sr=typeof structuredClone==ee&&structuredClone(new DOMException("","AbortError")).code!==J}catch{}class nr{constructor(e,{readable:t,writable:s},{options:n,config:a,streamOptions:i,useWebWorkers:o,transferStreams:c,workerURI:l},d){const{signal:u}=i;return r.assign(e,{busy:!0,generation:(e.generation||0)+1,readable:t.pipeThrough(new Yt(ae(a))).pipeThrough(new ar(i),{signal:u}),writable:s,options:r.assign({},n),workerURI:l,transferStreams:c,terminate:()=>new y(t=>{const{worker:r,busy:s}=e;r?(s?e.resolveTerminated=t:(r.terminate(),t()),e.interface=null):t()}),onTaskFinished(){if(e.busy){const{resolveTerminated:t}=e;t&&(e.resolveTerminated=null,e.terminated=!0,e.worker.terminate(),t()),e.busy=!1,d(e)}}}),$t===J&&($t=typeof T!=$),(o&&$t?cr:or)(e,a)}}class ar extends k{constructor({onstart:e,onprogress:t,size:r,onend:s}){let n=0;super({async start(){e&&await ir(e,r)},async transform(e,s){n+=e.length,t&&await ir(t,n,r),s.enqueue(e)},async flush(){s&&await ir(s,n)}})}}async function ir(e,...t){try{await e(...t)}catch{}}function or(e,t){return{run:()=>(async({options:e,readable:t,writable:r,onTaskFinished:s},n)=>{let a;try{if(!e.useCompressionStream)try{await void 0}catch{const t=e.codecType.startsWith(jt)?n.CompressionStreamZlib:n.DecompressionStreamZlib;t&&!t.requiresModule||(e.useCompressionStream=!0)}a=new Gt(e,n),await t.pipeThrough(a).pipeTo(r,{preventClose:!0,preventAbort:!0});const{signature:s,inputSize:i,outputSize:o}=a;return{signature:s,inputSize:i,outputSize:o}}catch(e){throw a&&(e.outputSize=a.outputSize),e}finally{s()}})(e,t)}}function cr(e,t){const{baseURI:s,chunkSize:n}=t;let{wasmURI:a}=t;if(!e.interface){let i;typeof a==ee&&(a=a());try{i=dr(e.workerURI,s,e)}catch{return $t=!1,or(e,t)}r.assign(e,{worker:i,terminated:!1,interface:{run:()=>(async(e,t)=>{let s,n;const a=new y((e,t)=>{s=e,n=t});r.assign(e,{reader:null,writer:null,resolveResult:s,rejectResult:n,result:a});const{readable:i,options:o}=e,{writable:c,closed:l,abortPipe:d}=(e=>{const t=new AbortController,{writable:r,readable:s}=new k,n=s.pipeTo(e,{preventClose:!0,preventAbort:!0,signal:t.signal});return n.catch(()=>{}),{writable:r,closed:n,abortPipe:()=>t.abort()}})(e.writable);let u;try{u=pr({type:"start",options:o,config:t,readable:i,writable:c},e)}catch(t){d();try{await l}catch{}throw e.onTaskFinished(),t}u||r.assign(e,{reader:i.getReader(),writer:c.getWriter()});try{const e=await a;return await p(),await l,e}catch(e){await p(),d();try{await l}catch{}throw e}async function p(){if(!u&&!c.locked)try{await c.getWriter().close()}catch{}}})(e,{chunkSize:n,wasmURI:a,baseURI:s})}})}return e.interface}function lr(e){const{worker:t}=e;if(t)try{t.terminate()}catch{}e.interface=null}function dr(e,t,s,n,a=!0){let i,o,c;if(tr===J||er!==e){const r=typeof e==ee;o=r?e(a):e;const l=o.startsWith("data:"),d=o.startsWith("blob:");if(l||d){n===J&&(n=!1),n&&(c=Jt);try{i=new T(o,c)}catch(a){if(d)try{u.revokeObjectURL(o)}catch{}if(r&&d)return dr(e,t,s,n,!1);if(n)throw a;return dr(e,t,s,!0,!1)}}else{n===J&&(n=!0),n&&(c=Jt);try{o=new u(o,t)}catch{}try{i=new T(o,c)}catch(r){if(n)throw r;return dr(e,t,s,!1,a)}}er=e,tr=o,rr=c}else i=new T(tr,rr);return i.addEventListener("message",e=>(async({data:e},t)=>{const{type:s,value:n,messageId:a,result:i,error:o}=e,{reader:c,writer:l,resolveResult:d,rejectResult:u,onTaskFinished:h,generation:w}=t,m=()=>t.generation!=w;try{if(o){const{message:e,stack:t,code:s,name:n,outputSize:a}=o,i=new p(e);r.assign(i,{stack:t,code:s,name:n,outputSize:a}),g(i)}else{if("pull"==s){const{value:e,done:r}=await c.read();m()||pr({type:Kt,value:e,done:r,messageId:a},t)}s==Kt&&(await l.ready,await l.write(new f(n)),m()||pr({type:"ack",messageId:a},t)),"close"==s&&g(null,i)}}catch(o){m()||(lr(t),g(o))}function g(e,t){m()||(e?u(e):d(t),l&&l.releaseLock(),h())}})(e,s)),i.addEventListener(Qt,e=>ur(e,s)),i.addEventListener("messageerror",e=>ur(e,s)),i}function ur(e,t){e.preventDefault&&e.preventDefault();const{rejectResult:r,writer:s,onTaskFinished:n}=t;lr(t),r&&(r(e.error||new p(e.message||Qt)),s&&s.releaseLock(),n())}function pr(e,{worker:t,writer:r,transferStreams:s}){try{const{value:r,readable:n,writable:a}=e,i=[];if(r&&(e.value=r,i.push(e.value.buffer)),s&&sr?(n&&i.push(n),a&&i.push(a)):e.readable=e.writable=null,i.length)try{return t.postMessage(e,i),!0}catch{sr=!1,e.readable=e.writable=null,t.postMessage(e)}else t.postMessage(e)}catch(e){throw r&&r.releaseLock(),e}}let fr=[];const hr=[];let wr,mr,gr=0;async function yr(e,t){const{options:r,config:s}=t,{transferStreams:a,useWebWorkers:i,useCompressionStream:o,compressed:c,signed:l,encrypted:d}=r,{workerURI:u,maxWorkers:p}=s;t.transferStreams=a||a===J;const f=!(c||l||d||t.transferStreams);return t.useWebWorkers=!f&&(i||i===J&&s.useWebWorkers),t.workerURI=t.useWebWorkers&&u?u:J,r.useCompressionStream=o||o===J&&s.useCompressionStream,(await(async()=>{const r=fr.find(e=>!e.busy);if(r)return Fr(r),new nr(r,e,t,h);if(fr.length<p){const r={indexWorker:gr};return gr++,fr.push(r),new nr(r,e,t,h)}return new y(r=>{hr.push({resolve:r,stream:e,workerOptions:t}),mr=s.workerStarvationTimeout,br()})})()).run();function h(e){if(zr(),hr.length){const[{resolve:t,stream:r,workerOptions:s}]=hr.splice(0,1);t(new nr(e,r,s,h)),br()}else e.worker?(Fr(e),((e,t)=>{const{config:r}=t,{terminateWorkerTimeout:s}=r;n.isFinite(s)&&s>=0&&(e.terminated?e.terminated=!1:e.terminateTimeout=setTimeout(async()=>{fr=fr.filter(t=>t!=e);try{await e.terminate()}catch{}},s))})(e,t)):fr=fr.filter(t=>t!=e)}}function br(){!wr&&hr.length&&n.isFinite(mr)&&mr>=0&&(wr=setTimeout(Sr,mr))}function zr(){wr&&(clearTimeout(wr),wr=null)}function Sr(){if(wr=null,hr.length){const[{resolve:e,stream:t,workerOptions:s}]=hr.splice(0,1),n=r.assign({},s,{useWebWorkers:!1,workerURI:J});e(new nr({},t,n,xr)),br()}}function xr(){zr(),br()}function Fr(e){const{terminateTimeout:t}=e;t&&(clearTimeout(t),e.terminateTimeout=null)}const kr="\0☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ".split("");function Dr(e,t){return t&&"cp437"==t.trim().toLowerCase()?(e=>{{let t="";for(let r=0;r<e.length;r++)t+=kr[e[r]];return t}})(e):new z(t,{ignoreBOM:!0}).decode(e)}const vr="filename",Er="rawFilename",Ar="comment",Rr="rawComment",Tr="uncompressedSize",Cr="compressedSize",Ur="offset",Mr="diskNumberStart",Wr="lastModDate",Or="rawLastModDate",_r="lastAccessDate",Nr="creationDate",Br="rawCreationDate",Lr="internalFileAttributes",Ir="externalFileAttributes",Pr="msdosAttributesRaw",Zr="msdosAttributes",Hr="msDosCompatible",Vr="zip64",qr="encrypted",Kr="version",jr="versionMadeBy",Xr="zipCrypto",Gr="directory",Yr="executable",Jr="compressionMethod",Qr="signature",$r="extraField",es="unixMode",ts="setuid",rs="setgid",ss="sticky",ns=[vr,Er,Tr,Cr,Wr,Or,Ar,Rr,_r,Nr,Br,Ur,Mr,Lr,Ir,Pr,Zr,Hr,Vr,qr,Kr,jr,Xr,Gr,Yr,Jr,Qr,$r,"extraFieldUnix","extraFieldInfoZip","uid","gid",es,ts,rs,ss,"bitFlag","filenameUTF8","commentUTF8","rawExtraField","extraFieldZip64","extraFieldUnicodePath","extraFieldUnicodeComment","extraFieldAES","extraFieldNTFS","extraFieldExtendedTimestamp"];class as{constructor(e){ns.forEach(t=>this[t]=e[t])}}const is="password",os="rawPassword",cs="passThrough",ls="signal",ds="checkAmbiguity",us="useWebWorkers",ps="useCompressionStream",fs="transferStreams",hs="preventClose",ws="offset",ms="File format is not recognized",gs="Compression method not supported",ys="Split zip file",bs="utf-8",zs="cp437",Ss=[[Tr,C],[Cr,C],[Ur,C],[Mr,U]],xs={[U]:{getValue:_s,bytes:4},[C]:{getValue:Ns,bytes:8}};class Fs{constructor(e,t={}){r.assign(this,{reader:new Pe(e),options:t,config:ne(),readRanges:new c})}async*getEntriesGenerator(e={}){const t=this;let{reader:s}=t;const{config:n}=t;if(await He(s),s.size!==J&&s.readUint8Array||(s=new be(await new d(s.readable).blob()),await He(s)),s.size<P)throw new p(ms);s.chunkSize=ae(n);const a=await(async(e,t,r)=>{const s=new f(4);var n;return n=t,Bs(s).setUint32(0,n,!0),await a(22)||await a(i.min(1048582,r));async function a(t){const n=r-t,a=await Ve(e,n,t);for(let e=a.length-22;e>=0;e--)if(a[e]==s[0]&&a[e+1]==s[1]&&a[e+2]==s[2]&&a[e+3]==s[3])return{offset:n+e,buffer:a.slice(e,e+22).buffer}}})(s,B,s.size);if(!a)throw _s(Bs(await Ve(s,0,4)))==O?new p(ys):new p("End of central directory not found");const o=Bs(a);let c=_s(o,12),u=_s(o,16);const h=a.offset,w=Os(o,20),m=h+P+w,g=Cs(t,e,ds);g&&m!=s.size&&Ts("appended data");let b=Os(o,4);const z=s.lastDiskNumber||0;let S,x,F=Os(o,6),D=Os(o,10),v=0;if(u==C||c==C||D==U||F==U){const e=20>a.offset?new f:await Ve(s,a.offset-20,20),t=Bs(e);if(20==e.length&&_s(t,0)==I){u=Ns(t,8);let e=await Ve(s,u,56,-1),r=Bs(e);const n=a.offset-20-56-(s.lastDiskOffset||0);if((56>e.length||_s(r,0)!=L)&&u!=n&&n>=0){const t=u;u=n,u>t&&(v=u-t),e=await Ve(s,u,56,-1),r=Bs(e)}if(56>e.length||_s(r,0)!=L)throw new p("End of Zip64 central directory locator not found");x=!0,b==U?b=_s(r,16):g&&b!=_s(r,16)&&Ts("mismatched zip64 end of central directory record"),F==U?F=_s(r,20):g&&F!=_s(r,20)&&Ts("mismatched zip64 end of central directory record"),D==U?D=Ns(r,32):g&&D!=Ns(r,32)&&Ts("mismatched zip64 end of central directory record"),c==C?c=Ns(r,40):g&&c!=Ns(r,40)&&Ts("mismatched zip64 end of central directory record"),u=Ns(r,48)+v}}const E=c,A=a.offset-(x?76:0);if(u<s.size||(v=s.size-u-c-P,u=s.size-c-P),z!=b)throw new p(ys);if(0>u)throw new p(ms);let R=0,T=await Ve(s,u,c,F),W=Bs(T);if(c){if(4>T.length)throw new p(ms);const e=A-c-(s.lastDiskOffset||0);if(_s(W,R)!=N&&u!=e&&F==b){const t=u;u=e,u>t&&(v+=u-t),T=await Ve(s,u,c,F),W=Bs(T)}}const _=A-u-(s.lastDiskOffset||0);if(c==_||0>_||F!=b||(c=_,T=await Ve(s,u,c,F),W=Bs(T)),0>u||u>=s.size)throw new p(ms);S=u;const Z=Cs(t,e,"filenameEncoding"),H=Cs(t,e,"commentEncoding"),X=g?new l:J;let G;for(let a=0;D>a;a++){const o=new ks(s,n,t.options);if(R+46>T.length||_s(W,R)!=N)throw new p("Central directory header not found");Ds(o,W,R+6);const c=!!o.bitFlag.languageEncodingFlag,l=R+46,u=l+o.filenameLength,f=u+o.extraFieldLength,h=Os(W,R+4),w=!(h>>8),m=h>>8==3,b=T.subarray(l,u),z=Os(W,R+32),x=f+z,F=T.subarray(f,x),E=c,A=c,C=_s(W,R+38),O=C&M,_={readOnly:!!(1&O),hidden:!!(2&O),system:!!(4&O),directory:!!(16&O),archive:!!(32&O)},B=_s(W,R+42),L=Cs(t,e,"decodeText")||Dr,I=E?bs:Z||zs,P=A?bs:H||zs;let Y=L(b,I);Y===J&&(Y=Dr(b,I));let Q=L(F,P);Q===J&&(Q=Dr(F,P)),r.assign(o,{index:a,versionMadeBy:h,msDosCompatible:w,compressedSize:0,uncompressedSize:0,commentLength:z,offset:B,diskNumberStart:Os(W,R+34),internalFileAttributes:Os(W,R+36),externalFileAttributes:C,msdosAttributesRaw:O,msdosAttributes:_,rawFilename:b,filenameUTF8:E,commentUTF8:A,rawExtraField:T.subarray(u,f),rawComment:F,filename:Y,comment:Q}),vs(o,o,W,R+6),o.offset+=v,S=i.min(o.offset,S),g&&(X.has(o.filename)&&(G=!0),X.add(o.filename));const $=o.externalFileAttributes>>16&U;o.unixMode===J&&16877&$&&(o.unixMode=$);const ee=!!(o.unixMode&q),te=!!(o.unixMode&K),re=!!(512&o.unixMode),se=o.unixMode!==J?!!(73&o.unixMode):m&&!!(73&$),ne=o.unixMode!==J&&(61440&o.unixMode)==V,ae=(61440&$)==V;r.assign(o,{setuid:ee,setgid:te,sticky:re,unixExternalUpper:$,internalFileAttribute:o.internalFileAttributes,externalFileAttribute:o.externalFileAttributes,executable:se,directory:ne||ae||w&&_.directory||o.filename.endsWith(j)&&!o.uncompressedSize,zipCrypto:o.encrypted&&!o.extraFieldAES});const ie=new as(o);ie.getData=(e,r)=>o.getData(e,ie,t.readRanges,r),ie.arrayBuffer=async e=>{const r=new k,[s]=await y.all([new d(r.readable).arrayBuffer(),o.getData(r,ie,t.readRanges,e)]);return s},R=x;const{onprogress:oe}=e;if(oe)try{await oe(a+1,D,new as(o))}catch{}yield ie}g&&R!=E&&Ts("trailing central directory data"),G&&Ts("duplicate filename"),g&&(v||D&&S>0)&&Ts("prepended data");const Y=Cs(t,e,"extractPrependedData"),Q=Cs(t,e,"extractAppendedData");return Y&&(t.prependedData=S>0?await Ve(s,0,S):new f),t.comment=w?await Ve(s,h+P,w):new f,Q&&(t.appendedData=m<s.size?await Ve(s,m,s.size-m):new f),!0}async getEntries(e={}){const t=[];for await(const r of this.getEntriesGenerator(e))t.push(r);return t}async close(){}}let ks=class{constructor(e,t,s){r.assign(this,{reader:e,config:t,options:s})}async getData(e,t,s,n={}){const a=this,{reader:o,index:c,offset:l,diskNumberStart:d,extraFieldAES:u,extraFieldZip64:h,compressionMethod:w,config:m,bitFlag:g,signature:y,rawLastModDate:b,uncompressedSize:z,compressedSize:S}=a,{dataDescriptor:x}=g,F=t.localDirectory={},k=await Ve(o,l,X,d),D=Bs(k);let E=Cs(a,n,is),A=Cs(a,n,os);const R=Cs(a,n,cs);if(E=E&&E.length&&E,A=A&&A.length&&A,u&&99!=u.originalCompressionMethod)throw new p(gs);if(0!=w&&8!=w&&9!=w&&!R)throw new p(gs);if(k.length<X||_s(D,0)!=W)throw new p("Local file header not found");Ds(F,D,4);const{extraFieldLength:T,filenameLength:C}=F,U=Cs(a,n,ds);let O=new f;if(U&&(C||T)){const e=await Ve(o,l+X,C+T,d);O=e.subarray(0,C),F.rawExtraField=e.subarray(C)}else F.rawExtraField=T?await Ve(o,l+X+C,T,d):new f;vs(a,F,D,4,!0),U&&((e,t,r)=>{const{rawFilename:s}=e;(r.length!=s.length||r.some((e,t)=>e!=s[t]))&&Ts("mismatched local file header (filename)"),(2057&t.rawBitFlag)!=(2057&e.rawBitFlag)&&Ts("mismatched local file header (general purpose bit flag)"),t.compressionMethod!=e.compressionMethod&&Ts("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||Ts("mismatched local file header (signature or sizes)")})(a,F,O);const{lastAccessDate:N,creationDate:B}=F;N&&(t.lastAccessDate=N),B&&(t.creationDate=B);const L=a.encrypted&&F.encrypted&&!R,I=L&&!u;if(R||(t.zipCrypto=I),L){if(!I&&u.strength===J)throw new p("Encryption method not supported");if(!E&&!A)throw new p("File contains encrypted entry")}const P=l+X+C+T,Z=S,H=o.readable;r.assign(H,{diskNumberStart:d,offset:P,size:Z});const V=Cs(a,n,ls),q=Cs(a,n,"checkPasswordOnly");let K=Cs(a,n,"checkOverlappingEntry");const j=Cs(a,n,"checkOverlappingEntryOnly");j&&(K=!0);const{onstart:G,onprogress:Y,onend:Q}=n,$=9==w;let ee=Cs(a,n,ps);$&&(ee=!1);const te={options:{codecType:Xt,password:E,rawPassword:A,zipCrypto:I,encryptionStrength:u&&u.strength,signed:Cs(a,n,"checkSignature")&&!R,passwordVerification:I&&(x?b>>>8&M:y>>>24&M),outputSize:R?S:z,signature:y,compressed:0!=w&&!R,encrypted:L,useWebWorkers:Cs(a,n,us),useCompressionStream:ee,transferStreams:Cs(a,n,fs),deflate64:$,checkPasswordOnly:q},config:m,streamOptions:{signal:V,size:Z,onstart:G,onprogress:Y,onend:Q}};let re;K&&await(async({reader:e,fileEntry:t,index:r,offset:s,diskNumberStart:n,signature:a,compressedSize:o,uncompressedSize:c,dataOffset:l,dataDescriptor:d,extraFieldZip64:u,readRanges:f})=>{let h=0;if(n&&e.readers)for(let t=0;t<i.min(n,e.readers.length);t++)h+=e.readers[t].size;let w=0;if(d&&(w=u?20:12),w){const r=await Ve(e,l+o,w+4,n);if(r.length==w+4&&_s(Bs(r),0)==_){const e=_s(Bs(r),4);let s,n;u?(s=Ns(Bs(r),8),n=Ns(Bs(r),16)):(s=_s(Bs(r),8),n=_s(Bs(r),12)),(t.encrypted&&!t.zipCrypto||e==a)&&s==o&&n==c&&(w+=4)}}const m={start:h+s,end:h+l+o+w,fileEntry:t};for(const[e,t]of f)if(e!=r&&m.start<t.end&&t.start<m.end){const e=new p("Overlapping entry found");throw e.overlappingEntry=t.fileEntry,e}f.set(r,m)})({reader:o,fileEntry:t,index:c,offset:l,diskNumberStart:d,signature:y,compressedSize:S,uncompressedSize:z,dataOffset:P,dataDescriptor:x||F.bitFlag.dataDescriptor,extraFieldZip64:h||F.extraFieldZip64,readRanges:s});try{if(!j){q&&(e=new v),e=new Ze(e),await He(e,R?S:z),({writable:re}=e);const{outputSize:t}=await yr({readable:H,writable:re},te);if(e.size+=t,t!=(R?S:z))throw new p(It)}}catch(t){if(t.outputSize!==J&&(e.size+=t.outputSize),!q||t.message!=rt)throw t}finally{Cs(a,n,hs)||!re||re.locked||await re.getWriter().close()}return q||j?J:e.getData?e.getData():re}};function Ds(e,t,s){const n=e.rawBitFlag=Os(t,s+2),a=!(1&~n),i=_s(t,s+6);r.assign(e,{encrypted:a,version:Os(t,s),bitFlag:{level:(6&n)>>1,dataDescriptor:!(8&~n),languageEncodingFlag:(n&H)==H},rawLastModDate:i,lastModDate:Us(i),filenameLength:Os(t,s+22),extraFieldLength:Os(t,s+24)})}function vs(e,t,s,n,a){const{rawExtraField:i}=t,l=t.extraField=new c,d=Bs(new f(i));let u=0;try{for(;u<i.length;){const e=Os(d,u),t=Os(d,u+2);l.set(e,{type:e,data:i.slice(u+4,u+4+t)}),u+=4+t}}catch{}const h=Os(s,n+4);r.assign(t,{signature:_s(s,n+10),compressedSize:_s(s,n+14),uncompressedSize:_s(s,n+18)});const w=l.get(1);w&&(((e,t)=>{t.zip64=!0;const r=Bs(e.data),s=Ss.filter(([e,r])=>t[e]==r),n=s.reduce((e,[,t])=>e+xs[t].bytes,0);if(e.data.length<n)throw new p("Zip64 extra field not found");for(let n=0,a=0;n<s.length;n++){const[i,o]=s[n],c=xs[o];t[i]=e[i]=c.getValue(r,a),a+=c.bytes}})(w,t),t.extraFieldZip64=w);const m=l.get(28789);m&&(Es(m,vr,Er,t,e),t.extraFieldUnicodePath=m);const g=l.get(25461);g&&(Es(g,Ar,Rr,t,e),t.extraFieldUnicodeComment=g);const y=l.get(39169);y&&y.data.length>=7?(((e,t,s)=>{const n=Bs(e.data),a=Ws(n,4);r.assign(e,{vendorVersion:Ws(n,0),vendorId:Ws(n,2),strength:a,originalCompressionMethod:s,compressionMethod:Os(n,5)}),t.compressionMethod=e.compressionMethod})(y,t,h),t.extraFieldAES=y):t.compressionMethod=h;const b=l.get(10);b&&(((e,t)=>{const s=Bs(e.data);let n,a=4;try{for(;a<e.data.length&&!n;){const t=Os(s,a),r=Os(s,a+2);1==t&&(n=e.data.slice(a+4,a+4+r)),a+=4+r}}catch{}try{if(n&&24==n.length){const s=Bs(n),a=s.getBigUint64(0,!0),i=s.getBigUint64(8,!0),o=s.getBigUint64(16,!0);r.assign(e,{rawLastModDate:a,rawLastAccessDate:i,rawCreationDate:o});const c={lastModDate:Ms(a),lastAccessDate:Ms(i),creationDate:Ms(o)};r.assign(e,c),r.assign(t,c)}}catch{}})(b,t),t.extraFieldNTFS=b);const z=l.get(30805);if(z)As(z,t,!1),t.extraFieldUnix=z;else{const e=l.get(30837);e&&(As(e,t,!0),t.extraFieldInfoZip=e)}const S=l.get(Z);S&&(((e,t,r)=>{if(!e.data.length)return;const s=Bs(e.data),n=Ws(s,0),a=[],i=[];r?(1&~n||(a.push(Wr),i.push(Or)),2&~n||(a.push(_r),i.push("rawLastAccessDate")),4&~n||(a.push(Nr),i.push(Br))):5>e.data.length||(a.push(Wr),i.push(Or));let c=1;a.forEach((r,n)=>{if(e.data.length>=c+4){const a=_s(s,c);t[r]=e[r]=new o(1e3*(0|a));const l=i[n];e[l]=a}c+=4})})(S,t,a),t.extraFieldExtendedTimestamp=S);const x=l.get(6534);x&&(t.extraFieldUSDZ=x)}function Es(e,t,s,n,a){if(5>e.data.length)return void(e.valid=!1);const i=Bs(e.data),o=new Ke;o.append(a[s]);const c=Bs(new f(4));c.setUint32(0,o.get(),!0);const l=_s(i,1);r.assign(e,{version:Ws(i,0),[t]:Dr(e.data.subarray(5)),valid:!a.bitFlag.languageEncodingFlag&&l==_s(c,0)}),e.valid&&(n[t]=e[t],n[t+"UTF8"]=!0)}function As(e,t,s){try{const n=Bs(new f(e.data));let a,i;if(s){let t=0;const s=Ws(n,t++),o=Ws(n,t++);a=Rs(e.data.subarray(t,t+o)),t+=o;const c=Ws(n,t++);i=Rs(e.data.subarray(t,t+c)),r.assign(e,{version:s,uid:a,gid:i})}else 4>e.data.length||(a=Os(n,0),i=Os(n,2),r.assign(e,{uid:a,gid:i}));a!==J&&(t.uid=a),i!==J&&(t.gid=i)}catch{}}function Rs(e){const t=new f(4);return t.set(e,0),new m(t.buffer,t.byteOffset,4).getUint32(0,!0)}function Ts(e){const t=new p("Ambiguous archive");throw t.reason=e,t}function Cs(e,t,r){return t[r]===J?e.options[r]:t[r]}function Us(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 Ms(e){return new o(n(e/a(1e4)-a(116444736e5)))}function Ws(e,t){return e.getUint8(t)}function Os(e,t){return e.getUint16(t,!0)}function _s(e,t){return e.getUint32(t,!0)}function Ns(e,t){return n(e.getBigUint64(t,!0))}function Bs(e){return new m(e.buffer,e.byteOffset,e.byteLength)}const Ls="Zip file comment exceeds 64KB",Is="Version exceeds 65535",Ps="Extra field data exceeds 64KB",Zs=-2147483648,Hs=2147483647,Vs="Zip64 is not supported (set the 'zip64' option to 'true')",qs=new f([7,0,2,0,65,69,3,0,0]),Ks="infozip",js="unix";let Xs=0;const Gs=[];class Ys{constructor(e,t={}){const s=(e=new Ze(e)).availableSize!==J&&e.availableSize>0&&e.availableSize!==Q&&e.maxSize!==J&&e.maxSize>0&&e.maxSize!==Q;r.assign(this,{writer:e,addSplitZipSignature:s,options:t,config:ne(),files:new c,filenames:new l,offset:t[ws]===J?e.size||e.writable.size||0:t[ws],initialOffset:t[ws]===J?0:t[ws]-(e.size||e.writable.size||0),pendingAddFileCalls:new l,bufferedWrites:0,lastFileEntry:J})}async prependZip(e){if(this.filenames.size)throw new p("Zip file not empty");e=new Pe(e),await He(e);const t=new Fs(e.readable),s=await t.getEntries();await t.close(),await He(this.writer),await e.readable.pipeTo(this.writer.writable,{preventClose:!0,preventAbort:!0}),this.writer.size=this.offset=e.size,this.filenames=new l(s.map(e=>e.filename)),this.files=new c(s.map(e=>{const{version:t,rawLastModDate:s,lastAccessDate:n,creationDate:a,rawFilename:i,bitFlag:o,encrypted:c,uncompressedSize:l,compressedSize:d,diskOffset:u,diskNumber:p,zip64:h}=e;let{compressionMethod:w,rawExtraFieldZip64:m,rawExtraFieldAES:g,rawExtraFieldExtendedTimestamp:y,rawExtraFieldNTFS:b,rawExtraFieldUnix:z,rawExtraField:S}=e;const{level:x,languageEncodingFlag:F,dataDescriptor:k}=o;m=m||new f,g=g||new f,y=y||new f,b=b||new f,z=z||new f,S=S||new f,e.extraFieldAES&&(w=99);const D=hn(m,g,y,b,z,S),v=h&&l>=C,E=h&&d>=C,A=-7&mn(x,F,k,c,w)|x<<1,{headerArray:R,headerView:T}=wn({version:t,bitFlag:A,compressionMethod:w,uncompressedSize:l,compressedSize:d,rawLastModDate:s,rawFilename:i,zip64CompressedSize:E,zip64UncompressedSize:v,extraFieldLength:D}),{signature:M}=e;return M!==J&&dn(T,10,M),r.assign(e,{zip64UncompressedSize:v,zip64CompressedSize:E,zip64Offset:h&&this.offset-u>=C,zip64DiskNumberStart:h&&p>=U,rawExtraFieldZip64:m,rawExtraFieldAES:g,rawExtraFieldExtendedTimestamp:y,rawExtraFieldNTFS:b,rawExtraFieldUnix:z,rawExtraField:S,extendedTimestamp:y.length>0||b.length>0,extraFieldExtendedTimestampFlag:1+(n?2:0)+(a?4:0),headerArray:R,headerView:T}),[e.filename,e]}))}async add(e="",t,s={}){const n=this;s=r.assign({},s);const{pendingAddFileCalls:i,config:c}=n;let l,d;Xs<c.maxWorkers?Xs++:await new y(e=>Gs.push(e));try{if(e=e.trim(),on(n,s,Gr)&&!e.endsWith(j)&&(e+=j),n.filenames.has(e))throw new p("File already exists");return n.filenames.add(e),d=!0,l=(async(e,t,s,n)=>{const i=((e,t,r)=>{t=t.trim();let s=on(e,r,Hr),n=on(e,r,jr,s?20:768);const a=on(e,r,Yr),i=on(e,r,"uid"),o=on(e,r,"gid");let c=on(e,r,es),l=on(e,r,"unixExtraFieldType"),d=on(e,r,ts),u=on(e,r,rs),f=on(e,r,ss);if(i!==J&&(0>i||i>C))throw new p("Invalid uid (must be integer 0..2^32-1)");if(o!==J&&(0>o||o>C))throw new p("Invalid gid (must be integer 0..2^32-1)");if(c!==J&&(0>c||c>U))throw new p("Invalid UNIX mode (must be integer 0..65535)");if(l!==J&&l!==Ks&&l!==js)throw new p("Invalid unixExtraFieldType (must be 'infozip' or 'unix')");if(l===js&&(i!==J&&i>U||o!==J&&o>U))throw new p("uid/gid must be 0..65535 for unixExtraFieldType 'unix' (use 'infozip' for larger ids)");l!==J||i===J&&o===J||(l=Ks);let h=on(e,r,Pr),w=on(e,r,Zr);const m=h!==J||w!==J;if(i!==J||o!==J||c!==J||l?(s=!1,n=n&U|768):m&&(s=!0,n&=M),h!==J&&(0>h||h>M))throw new p("Invalid msdosAttributesRaw (must be integer 0..255)");if(w&&"object"!=typeof w)throw new p("Invalid msdosAttributes (must be an object with boolean flags)");if(n>U)throw new p(Is);let g=on(e,r,Ir,0);!r[Gr]&&t.endsWith(j)&&(r[Gr]=!0);const y=on(e,r,Gr);let b;return y?(t.endsWith(j)||(t+=j),0===g&&(g=16,s||(g|=16877<<16))):s||0!==g||(g=a?493<<16:27525120),s||(b=g>>16&U,c=c===J?b:c&U,d?c|=q:d=!!(c&q),u?c|=K:u=!!(c&K),f?c|=512:f=!!(512&c),y&&(c|=V),g=(c&U)<<16|g&M),({msdosAttributesRaw:h,msdosAttributes:w}=((e,t)=>{if(e!==J)e&=M;else if(t!==J){const{readOnly:r,hidden:s,system:n,directory:a,archive:i}=t;let o=0;r&&(o|=1),s&&(o|=2),n&&(o|=4),a&&(o|=16),i&&(o|=32),e=o&M}return t===J&&(t={readOnly:!!(1&e),hidden:!!(2&e),system:!!(4&e),directory:!!(16&e),archive:!!(32&e)}),{msdosAttributesRaw:e,msdosAttributes:t}})(h,w)),m&&(g=g&C|h&M),{name:t,resolvedOptions:{versionMadeBy:n,msDosCompatible:s,externalFileAttributes:g,unixExternalUpper:b,uid:i,gid:o,unixMode:c,unixExtraFieldType:l,setuid:d,setgid:u,sticky:f,msdosAttributesRaw:h,msdosAttributes:w}}})(e,t,n);({name:t}=i);const c=((e,t,r)=>{const s=on(e,r,"encodeText",Xe);let n=s(t);if(n===J&&(n=Xe(t)),hn(n)>U)throw new p("File entry name exceeds 64KB");const a=r[Ar]||"";let i=s(a);if(i===J&&(i=Xe(a)),hn(i)>U)throw new p("File entry comment exceeds 64KB");const c=on(e,r,Kr,20);if(c>U)throw new p(Is);const l=on(e,r,Wr,new o),d=on(e,r,_r),u=on(e,r,Nr),h=on(e,r,Lr,0),w=on(e,r,cs);let m,g;w||(m=on(e,r,is),g=on(e,r,os));const y=on(e,r,"encryptionStrength",3),b=on(e,r,Xr),z=on(e,r,"extendedTimestamp",!0),S=on(e,r,"keepOrder",!0),x=on(e,r,us),F=on(e,r,fs,!0),k=on(e,r,"bufferedWrite"),D=on(e,r,"createTempStream"),v=on(e,r,"dataDescriptorSignature",!0),E=on(e,r,ls),A=on(e,r,"useUnicodeFileNames",!0),R=on(e,r,Jr);if(!w&&R!==J&&0!==R&&8!==R)throw new p("Compression method not supported");let T=on(e,r,"level"),C=on(e,r,ps),M=on(e,r,"dataDescriptor");k&&M===J&&(M=!1),(M===J||b)&&(M=!0),T!==J&&6!=T&&(C=!1),C||e.config.CompressionStream!==J||e.config.CompressionStreamZlib!==J||(T=0);const W=on(e,r,Vr);if(!b&&(m!==J||g!==J)&&(1>y||y>3))throw new p("The strength must equal 1, 2, or 3");let O=new f;const _=r[$r];if(_){let e=0,t=0;_.forEach(t=>e+=4+hn(t)),O=new f(e);const r=fn(O);_.forEach((e,s)=>{if(s>U)throw new p("Extra field type exceeds 65535");if(hn(e)>U)throw new p(Ps);ln(r,t,s),ln(r,t+2,hn(e)),pn(O,e,t+4),t+=4+hn(e)})}return{comment:a,resolvedOptions:{rawFilename:n,rawComment:i,version:c,lastModDate:l,lastAccessDate:d,creationDate:u,internalFileAttributes:h,passThrough:w,password:m,rawPassword:g,encryptionStrength:y,zipCrypto:b,extendedTimestamp:z,keepOrder:S,useWebWorkers:x,transferStreams:F,bufferedWrite:k,createTempStream:D,dataDescriptorSignature:v,signal:E,useUnicodeFileNames:A,compressionMethod:R,level:T,useCompressionStream:C,dataDescriptor:M,zip64:W,rawExtraField:O}}})(e,t,n),{comment:l}=c,d=n[$r];let u;e.files.set(t,J);try{const o=await(async(e,t,{resolvedOptions:r},s)=>{const{passThrough:n,zipCrypto:a,password:i,rawPassword:o,encryptionStrength:c}=r;let{dataDescriptor:l,zip64:d,level:u,compressionMethod:f}=r,h=0,w=0;if(n){if(!t)throw new p("Undefined reader");if(w=s[Tr],w===J)throw new p("Undefined uncompressed size")}const m=!0===d,g=on(e,s,qr),y=!!t&&(!!(i&&hn(i)||o&&hn(o))||n&&g);t||(u=0,f=0);const b=y?a?12:16+4*c:0;t&&(t=new Pe(t),await He(t),n?(s.uncompressedSize=w,h=cn(w)+b):t.size===J?(l=!0,(d||d===J)&&(d=!0,w=h=4294967296)):(s.uncompressedSize=w=t.size,h=cn(w)+b));const z=m||w>=C,S=m||h>=C;if(z||S){if(!1===d)throw new p(Vs);d=!0}return d=d||!1,{reader:t,resolvedOptions:{dataDescriptor:l,zip64:d,zip64UncompressedSize:z,zip64CompressedSize:S,uncompressedSize:w,level:u,compressionMethod:f,encrypted:y}}})(e,s,c,n);({reader:s}=o);const{diskOffset:l,diskNumber:d}=e.writer,h=(e=>{const{rawFilename:t,lastModDate:r,lastAccessDate:s,creationDate:n,level:a,zip64:i,zipCrypto:o,useUnicodeFileNames:c,dataDescriptor:l,directory:d,rawExtraField:u,encryptionStrength:h,extendedTimestamp:w,passThrough:m,encrypted:g,zip64UncompressedSize:y,zip64CompressedSize:b,uncompressedSize:z}=e;let{version:S,compressionMethod:x}=e;const F=!d&&(x===J?a===J||a>0:0!==x);let k;const D=m||!F,v=i&&(e.bufferedWrite||!l||!y&&!b||D),E=v||i&&l&&(y||b);if(i&&(y||b)){const e=20,t=$s(e);if(t.uint16(1),t.uint16(e-4),k=t.array,v&&(t.uint64(z),D)){const e=g?o?12:16+4*h:0;t.uint64(m?0:z+e)}}else k=new f;let A,R,T,C,M;if(g&&!o){const e=$s(hn(qs)+2);e.uint16(39169),e.bytes(qs),A=e.array,A[8]=h}else A=new f;if(w){const e=sn(r);if(nn(e)){const t=9+(s?4:0)+(n?4:0),r=$s(t);C=1+(s?2:0)+(n?4:0),r.uint16(Z),r.uint16(t-4),r.uint8(C),r.uint32(e),s&&r.uint32(an(sn(s))),n&&r.uint32(an(sn(n))),T=r.array}else T=new f;try{const e=rn(r),t=$s(36);t.uint16(10),t.uint16(32),t.skip(4),t.uint16(1),t.uint16(24),t.uint64(e),t.uint64(rn(s)||e),t.uint64(rn(n)||e),R=t.array}catch{R=new f}}else R=T=new f;try{const{uid:t,gid:r,unixExtraFieldType:s}=e;if(s!=Ks||t===J&&r===J)if(s!=js||t===J&&r===J)M=new f;else{const e=$s(8);e.uint16(30805),e.uint16(4),e.uint16((t===J?0:t)&U),e.uint16((r===J?0:r)&U),M=e.array}else{const e=Qs(t),s=Qs(r),n=3+e.length+s.length,a=$s(4+n);a.uint16(30837),a.uint16(n),a.uint8(1),a.uint8(e.length),a.bytes(e),a.uint8(s.length),a.bytes(s),M=a.array}}catch{M=new f}x===J&&(x=F?8:0),i&&(S=S>45?S:45),g&&!o&&(S=S>51?S:51,A[9]=x,x=99);const O=E?hn(k):0,_=O+hn(A,T,R,M,u);if(_>U)throw new p(Ps);const{headerArray:N,headerView:B,rawLastModDate:L}=wn({version:S,bitFlag:mn(a,c,l,g,x),compressionMethod:x,uncompressedSize:z,lastModDate:Y>r?Y:r>G?G:r,rawFilename:t,zip64CompressedSize:b,zip64UncompressedSize:y,extraFieldLength:_}),I=$s(X+hn(t)+_),P=I.array,H=fn(P);return I.uint32(W),I.bytes(N),I.bytes(t),E&&I.bytes(k),I.bytes(A),I.bytes(T),I.bytes(R),I.bytes(M),I.bytes(u),l&&(b||dn(H,18,0),y||dn(H,22,0)),{localHeaderArray:P,localHeaderView:H,headerArray:N,headerView:B,lastModDate:r,rawLastModDate:L,encrypted:g,compressed:F,version:S,compressionMethod:x,extraFieldExtendedTimestampFlag:C,rawExtraFieldZip64:new f,localExtraFieldZip64Length:O,rawExtraFieldExtendedTimestamp:T,rawExtraFieldNTFS:R,rawExtraFieldUnix:M,rawExtraFieldAES:A,extraFieldLength:_}})(n=r.assign({},n,i.resolvedOptions,c.resolvedOptions,o.resolvedOptions,{internalFileAttribute:c.resolvedOptions.internalFileAttributes,externalFileAttribute:i.resolvedOptions.externalFileAttributes,signature:n[Qr],offset:e.offset-l,diskNumberStart:d})),w=(({zip64:e,dataDescriptor:t,dataDescriptorSignature:r})=>{let s,n=new f,a=0,i=e?20:12;return r&&(i+=4),t&&(n=new f(i),s=fn(n),r&&(a=4,dn(s,0,_))),{dataDescriptorArray:n,dataDescriptorView:s,dataDescriptorOffset:a}})(n),m=hn(h.localHeaderArray,w.dataDescriptorArray);u=await(async(e,t,s,n,i)=>{const{files:o,writer:c}=e,{keepOrder:l,dataDescriptor:d,signal:u}=i,{headerInfo:h}=n,w=e.options.usdz,m=e.lastFileEntry;let g,b,z,S,x,F,D,E={},A=0;o.set(t,E),e.lastFileEntry=E;try{let b;l&&(b=m&&m.lock,E.lock=new y(e=>z=e)),i.bufferedWrite||!l||e.writerLocked||e.bufferedWrites||!d?(g=!0,e.bufferedWrites++,D=i.createTempStream?await i.createTempStream():new k(J,J,{highWaterMark:Q}),D.size=0,await He(c)):(D=c,await R()),await He(D);const{diskOffset:U}=c;if(e.addSplitZipSignature){delete e.addSplitZipSignature;const t=new f(4);dn(fn(t),0,O),await tn(c,t),e.offset+=4}w&&!g&&Js(n,e.offset-U);const{localHeaderArray:W}=h;g||(await b,await T());const _=c.diskNumber,N=en(e,c);if(E.diskNumberStart=_,g||(x=!0,F=c.size,await tn(D,W)),E=await(async(e,t,{diskNumberStart:s,lock:n},i,o,c)=>{const{headerInfo:l,dataDescriptorInfo:d,metadataSize:u}=i,{headerArray:f,headerView:h,lastModDate:w,rawLastModDate:m,encrypted:g,compressed:y,version:b,compressionMethod:z,rawExtraFieldZip64:S,localExtraFieldZip64Length:x,rawExtraFieldExtendedTimestamp:F,extraFieldExtendedTimestampFlag:k,rawExtraFieldNTFS:D,rawExtraFieldUnix:v,rawExtraFieldAES:E}=l,{dataDescriptorArray:A}=d,{rawFilename:R,lastAccessDate:T,creationDate:U,password:W,rawPassword:O,level:_,zip64:N,zip64UncompressedSize:B,zip64CompressedSize:L,zipCrypto:I,dataDescriptor:P,directory:Z,executable:H,versionMadeBy:V,rawComment:q,rawExtraField:K,useWebWorkers:j,transferStreams:X,onstart:G,onprogress:Y,onend:Q,signal:$,encryptionStrength:ee,extendedTimestamp:te,msDosCompatible:re,internalFileAttributes:se,externalFileAttributes:ne,uid:ie,gid:oe,unixMode:ce,setuid:le,setgid:de,sticky:ue,unixExternalUpper:pe,msdosAttributesRaw:fe,msdosAttributes:he,useCompressionStream:we,passThrough:me}=c,ge={lock:n,versionMadeBy:V,zip64:N,directory:!!Z,executable:!!H,filenameUTF8:!0,rawFilename:R,commentUTF8:!0,rawComment:q,rawExtraFieldZip64:S,localExtraFieldZip64Length:x,rawExtraFieldExtendedTimestamp:F,rawExtraFieldNTFS:D,rawExtraFieldUnix:v,rawExtraFieldAES:E,rawExtraField:K,extendedTimestamp:te,msDosCompatible:re,internalFileAttributes:se,externalFileAttributes:ne,diskNumberStart:s,uid:ie,gid:oe,unixMode:ce,setuid:le,setgid:de,sticky:ue,unixExternalUpper:pe,msdosAttributesRaw:fe,msdosAttributes:he};let{signature:ye,uncompressedSize:be}=c,ze=0;me||(be=0);const{writable:Se}=t;if(e){e.chunkSize=ae(o);const r=e.readable,s=e.size,n={options:{codecType:jt,level:_,rawPassword:O,password:W,encryptionStrength:ee,zipCrypto:g&&I,passwordVerification:g&&I&&m>>8&M,signed:!me,compressed:y&&!me,encrypted:g&&!me,useWebWorkers:j,useCompressionStream:we,transferStreams:X},config:o,streamOptions:{signal:$,size:s,onstart:G,onprogress:Y,onend:Q}};try{const e=await yr({readable:r,writable:Se},n);if(ze=e.outputSize,t.size+=ze,me||(be=e.inputSize,ye=e.signature),!L&&ze>=C||!B&&be>=C)throw new p(Vs)}catch(e){throw e.outputSize!==J&&(t.size+=e.outputSize),e}}return(({signature:e,compressedSize:t,uncompressedSize:r,headerInfo:s,dataDescriptorInfo:n},{zip64:i,zipCrypto:o,dataDescriptor:c})=>{const{headerView:l,encrypted:d}=s,{dataDescriptorView:u,dataDescriptorOffset:p}=n;d&&!o||e===J||(dn(l,10,e),c&&dn(u,p,e)),i?c&&(un(u,p+4,a(t)),un(u,p+12,a(r))):(dn(l,14,t),dn(l,18,r),c&&(dn(u,p+4,t),dn(u,p+8,r)))})({signature:ye,compressedSize:ze,uncompressedSize:be,headerInfo:l,dataDescriptorInfo:d},c),P&&await tn(t,A),r.assign(ge,{uncompressedSize:be,compressedSize:ze,lastModDate:w,rawLastModDate:m,creationDate:U,lastAccessDate:T,encrypted:g,zipCrypto:I,size:u+ze,compressionMethod:z,version:b,headerArray:f,headerView:h,signature:ye,extraFieldExtendedTimestampFlag:k,zip64UncompressedSize:B,zip64CompressedSize:L}),ge})(s,D,E,n,e.config,i),g||(x=!1),o.set(t,E),E.filename=t,g){if(await y.all([D.writable.getWriter().close(),b]),await R(),S=!0,F=c.size,await T(),E.diskNumberStart=c.diskNumber,E.offset=en(e,c),w){const t=n.metadataSize;Js(n,e.offset-c.diskOffset),E.size+=n.metadataSize-t}(({rawFilename:e,encrypted:t,zip64:r,localExtraFieldZip64Length:s,signature:n,compressedSize:i,uncompressedSize:o,zip64UncompressedSize:c,zip64CompressedSize:l},d,{dataDescriptor:u})=>{if(u||(t||dn(d,14,n),l||dn(d,18,i),c||dn(d,22,o)),r&&s){const t=X+hn(e)+4;un(d,t,a(o)),un(d,t+8,a(i))}})(E,h.localHeaderView,i),await tn(c,h.localHeaderArray),await(async(e,t,r)=>{const s=t.writable.getWriter();try{await e.pipeTo(new v({async write(e){var t;await s.ready,await s.write(e),t=hn(e),A+=t}}),{preventClose:!0,preventAbort:!0,signal:r})}finally{s.releaseLock()}})(D.readable,c,u),c.size+=D.size,S=!1}else E.diskNumberStart=_,E.offset=N;return e.offset+=E.size,E}catch(r){if(S||x){if(e.hasCorruptedEntries=!0,r)try{r.corruptedEntry=!0}catch{}e.offset+=c.size-F,g&&(e.offset+=A)}throw o.delete(t),r}finally{g&&e.bufferedWrites--,z&&z(),b&&b()}async function R(){e.writerLocked=!0;const{lockWriter:t}=e;e.lockWriter=new y(t=>b=()=>{e.writerLocked=!1,t()}),await t}async function T(){hn(h.localHeaderArray)>c.availableSize&&(c.availableSize=0,await tn(c,new f))}})(e,t,s,{headerInfo:h,dataDescriptorInfo:w,metadataSize:m},n)}catch(r){throw e.files.delete(t),r}return r.assign(u,{name:t,comment:l,extraField:d}),new as(u)})(n,e,t,s),i.add(l),await l}catch(t){throw d&&n.filenames.delete(e),t}finally{i.delete(l);const e=Gs.shift();e?e():Xs--}}remove(e){const{filenames:t,files:r}=this;if("string"==typeof e&&(e=r.get(e)),e&&e.filename!==J){const{filename:s}=e;if(t.has(s)&&r.has(s))return t.delete(s),r.delete(s),!0}return!1}async close(e=new f,r={}){const{pendingAddFileCalls:s,writer:n}=this,{writable:i}=n;if(hn(e)>U)throw new p(Ls);for(;s.size;)await y.allSettled(t.from(s));return await(async(e,r,s)=>{const n=(e=>{let t=0;for(const[,r]of e){const{rawFilename:e,rawExtraFieldAES:s,rawComment:n,rawExtraFieldNTFS:a,rawExtraFieldUnix:i,rawExtraField:o,extendedTimestamp:c,extraFieldExtendedTimestampFlag:l,lastModDate:d,zip64UncompressedSize:u,zip64CompressedSize:h,uncompressedSize:w,compressedSize:m}=r,g=r.offset>=C,y=r.diskNumberStart>=U;let b,z;if(g||y||u||h){const e=4+(u?8:0)+(h?8:0)+(g?8:0)+(y?4:0),t=$s(e);t.uint16(1),t.uint16(e-4),u&&t.uint64(w),h&&t.uint64(m),g&&t.uint64(r.offset),y&&t.uint32(r.diskNumberStart),b=t.array}else b=new f;r.rawExtraFieldZip64=b,r.zip64Offset=g,r.zip64DiskNumberStart=y;const S=sn(d);if(c&&nn(S)){const e=$s(9);e.uint16(Z),e.uint16(5),e.uint8(l),e.uint32(S),z=e.array}else z=new f;r.rawExtraFieldExtendedTimestamp=z;const x=hn(b,s,a,i,z,o);if(x>U)throw new p(Ps);t+=46+hn(e,n)+x}return t})(e.files),{cdStartDiskNumber:i,cdStartDiskOffset:o}=await(async(e,r,s)=>{const{files:n,writer:a}=e,i=new f(r);await He(a);let o=0,c=0,l=a.diskNumber,d=a.diskOffset;for(const[e,r]of t.from(n.values()).entries()){const{offset:t,rawFilename:u,rawExtraFieldZip64:p,rawExtraFieldAES:h,rawExtraFieldExtendedTimestamp:w,rawExtraFieldNTFS:m,rawExtraFieldUnix:g,rawExtraField:y,rawComment:b,versionMadeBy:z,headerArray:S,headerView:x,zip64UncompressedSize:F,zip64CompressedSize:k,zip64DiskNumberStart:D,zip64Offset:v,internalFileAttributes:E,externalFileAttributes:A,diskNumberStart:R,uncompressedSize:T,compressedSize:M}=r,W=hn(p,h,w,m,g,y),O=46+hn(u,b)+W;o+O-c>a.availableSize&&(await tn(a,i.slice(c,o)),c=o,a.availableSize=0,await tn(a,new f)),0==e&&(l=a.diskNumber,d=a.diskOffset),F||dn(x,18,T),k||dn(x,14,M),(v||D)&&45>r.version&&ln(x,0,45);const _=$s(O);if(_.uint32(N),_.uint16(z),_.bytes(S.subarray(0,24)),_.uint16(W),_.uint16(hn(b)),_.uint16(D?U:R),_.uint16(E),_.uint32(A),_.uint32(v?C:t),_.bytes(u),_.bytes(p),_.bytes(h),_.bytes(w),_.bytes(m),_.bytes(g),_.bytes(y),_.bytes(b),pn(i,_.array,o),o+=O,s.onprogress)try{await s.onprogress(e+1,n.size,new as(r))}catch{}}return await tn(a,c?i.slice(c):i),{cdStartDiskNumber:l,cdStartDiskOffset:d}})(e,n,s);await(async(e,t,r,s)=>{const{writer:n}=e,{cdStartDiskNumber:i,cdStartDiskOffset:o}=s;let{directoryDataLength:c}=s,l=e.files.size,d=i,u=e.offset-o-(i?e.initialOffset:0),h=n.diskNumber;n.availableSize<P&&h++;let w=on(e,r,Vr);if(!(C>u&&C>c&&U>l&&U>h)){if(!1===w)throw new p(Vs);w=!0}const m=hn(t);if(m>U)throw new p(Ls);const g=$s(w?98:P);hn(g.array)+m>n.availableSize&&(n.availableSize=0,await tn(n,new f)),h=n.diskNumber,w&&(g.uint32(L),g.uint64(44),g.uint16(45),g.uint16(45),g.uint32(h),g.uint32(d),g.uint64(l),g.uint64(l),g.uint64(c),g.uint64(u),g.uint32(I),g.uint32(h),g.uint64(a(e.offset)+a(c)-a(n.diskOffset)-a(n.diskNumber?e.initialOffset:0)),g.uint32(h+1),on(e,r,"supportZip64SplitFile",!0)&&(h=U,d=U),l=U,u=C,c=C),g.uint32(B),g.uint16(h),g.uint16(d),g.uint16(l),g.uint16(l),g.uint32(c),g.uint32(u),g.uint16(m),await tn(n,g.array),m&&await tn(n,t)})(e,r,s,{cdStartDiskNumber:i,cdStartDiskOffset:o,directoryDataLength:n})})(this,e,r),on(this,r,hs)||await i.getWriter().close(),n.getData?n.getData():i}}function Js(e,t){const{headerInfo:r}=e;let s,{localHeaderArray:n,extraFieldLength:a}=r,i=64-(t+hn(n))%64;4>i&&(i+=64);const o=new f(i),c=fn(o);ln(c,0,6534),ln(c,2,i-4);const l=n;r.localHeaderArray=n=new f(hn(l)+i),pn(n,l),pn(n,o,hn(l)),s=fn(n),ln(s,28,a+i),r.localHeaderView=s,e.metadataSize+=i}function Qs(e){if(e===J)return new f;{const t=new f(4);fn(t).setUint32(0,e,!0);let r=4;for(;r>1&&0===t[r-1];)r--;return t.subarray(0,r)}}function $s(e){const t=new f(e),r=fn(t);let s=0;return{array:t,uint8:e=>{((e,t,r)=>{e.setUint8(t,r)})(r,s,e),s+=1},uint16:e=>{ln(r,s,e),s+=2},uint32:e=>{dn(r,s,e),s+=4},uint64:e=>{un(r,s,a(e)),s+=8},bytes:e=>{pn(t,e,s),s+=hn(e)},skip:e=>s+=e}}function en(e,t){return e.offset-t.diskOffset-(t.diskNumber?e.initialOffset:0)}async function tn(e,t){const{writable:r}=e,s=r.getWriter();try{await s.ready,e.size+=hn(t),await s.write(t)}finally{s.releaseLock()}}function rn(e){if(e)return(a(e.getTime())+a(116444736e5))*a(1e4)}function sn(e){return i.floor(e.getTime()/1e3)}function nn(e){return e>=Zs&&Hs>=e}function an(e){return i.min(Hs,i.max(Zs,e))}function on(e,t,r,s){const n=t[r]===J?e.options[r]:t[r];return n===J?s:n}function cn(e){return e+5*(i.floor(e/16383)+1)}function ln(e,t,r){e.setUint16(t,r,!0)}function dn(e,t,r){e.setUint32(t,r,!0)}function un(e,t,r){e.setBigUint64(t,r,!0)}function pn(e,t,r){e.set(t,r)}function fn(e){return new m(e.buffer,e.byteOffset,e.byteLength)}function hn(...e){let t=0;return e.forEach(e=>e&&(t+=e.length)),t}function wn({version:e,bitFlag:t,compressionMethod:r,uncompressedSize:s,compressedSize:n,lastModDate:a,rawLastModDate:i,rawFilename:o,zip64CompressedSize:c,zip64UncompressedSize:l,extraFieldLength:d}){const u=$s(26),p=u.array,f=fn(p);if(u.uint16(e),u.uint16(t),u.uint16(r),i===J){const e=new w(1),t=fn(e);ln(t,0,(a.getHours()<<6|a.getMinutes())<<5|a.getSeconds()/2),ln(t,2,(a.getFullYear()-1980<<4|a.getMonth()+1)<<5|a.getDate()),i=e[0]}return u.uint32(i),u.skip(4),c||n!==J?u.uint32(c?C:n):u.skip(4),l||s!==J?u.uint32(l?C:s):u.skip(4),u.uint16(hn(o)),u.uint16(d),{headerArray:p,headerView:f,rawLastModDate:i}}function mn(e,t,r,s,n){let a=0;return t&&(a|=H),r&&(a|=8),8!=n&&9!=n||(0>e||e>3||(a|=6),e>3&&5>=e&&(a|=4),9==e&&(a|=2)),s&&(a|=1),a}const gn="Entry filename already exists";class yn{constructor(e,t,s,n){const a=this;if(e.root&&n&&n.getChildByName(t))throw new p(gn);s||(s={}),r.assign(a,{fs:e,name:t,data:s.data,options:s.options,id:e.entryIdCounter++,parent:n,children:[],uncompressedSize:s.uncompressedSize||0,passThrough:s.passThrough}),!n&&e.root||(e.entries[a.id]=a),n&&a.parent.children.push(a)}moveTo(e){this.fs.move(this,e)}getFullname(){return this.getRelativeName()}getRelativeName(e=this.fs.root){let t=this.name,r=this.parent;for(;r&&r!=e;)t=(r.name?r.name+"/":"")+t,r=r.parent;return t}isDescendantOf(e){let t=this.parent;for(;t&&t.id!=e.id;)t=t.parent;return!!t}rename(e){const t=this.parent;if(t&&t.getChildByName(e))throw new p(gn);this.name=e}}class bn extends yn{constructor(e,t,r,s){super(e,t,r,s);const n=this;n.Reader=r.Reader,n.Writer=r.Writer,r.getData&&(n.getData=r.getData)}clone(){return new bn(this.fs,this.name,this)}async getData(e,t={}){const r=this;if(!e||e.constructor==r.Writer&&r.data)return r.data;{const s=r.reader=new r.Reader(r.data,t),n=r.data?r.data.uncompressedSize:s.size;await y.all([He(s),He(e,n)]);const{readable:a}=s;return r.uncompressedSize=s.size,await a.pipeTo(e.writable),e.getData?e.getData():e.writable}}isPasswordProtected(){return!(!this.data||!this.data.encrypted)}async checkPassword(e,t={}){const s=this;if(!s.isPasswordProtected())return!0;try{return await s.data.getData(null,r.assign({},t,{password:e,checkPasswordOnly:!0})),!0}catch(e){if(e.message==et)return!1;throw e}}getText(e,t){return this.getData(new xe(e),t)}getBlob(e,t){return this.getData(new ze(e),t)}getData64URI(e,t){return this.getData(new ye(e),t)}getUint8Array(e){return this.getData(new Be,e)}getWritable(e=new v,t){return this.getData({writable:e},t)}async getArrayBuffer(e){const t=await this.getUint8Array(e);return t.byteOffset||t.byteLength!=t.buffer.byteLength?t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength):t.buffer}replaceBlob(e){r.assign(this,{data:e,Reader:be,Writer:ze,reader:null})}replaceText(e){r.assign(this,{data:e,Reader:Se,Writer:xe,reader:null})}replaceData64URI(e){r.assign(this,{data:e,Reader:ge,Writer:ye,reader:null})}replaceUint8Array(e){r.assign(this,{data:e,Reader:Ne,Writer:Be,reader:null})}replaceReadable(e){r.assign(this,{data:null,Reader:xn(e),Writer:null,reader:null})}}class zn extends yn{constructor(e,t,r,s){super(e,t,r,s),this.directory=!0}clone(e){const t=this,r=new zn(t.fs,t.name,t);return e&&(r.children=t.children.map(t=>{const s=t.clone(e);return s.parent=r,s})),r}addDirectory(e,t){return Rn(this,e,{options:t},!0)}addText(e,t,r={}){return Rn(this,e,{data:t,Reader:Se,Writer:xe,options:r,uncompressedSize:t.length})}addBlob(e,t,r={}){return Rn(this,e,{data:t,Reader:be,Writer:ze,options:r,uncompressedSize:t.size})}addData64URI(e,t,r={}){let s=t.length;for(;"="==t.charAt(s-1);)s--;const n=t.indexOf(",")+1;return Rn(this,e,{data:t,Reader:ge,Writer:ye,options:r,uncompressedSize:i.floor(.75*(s-n))})}addUint8Array(e,t,r={}){return Rn(this,e,{data:t,Reader:Ne,Writer:Be,options:r,uncompressedSize:t.length})}addHttpContent(e,t,r={}){return Rn(this,e,{data:t,Reader:class extends _e{constructor(e){super(e,r)}},options:r})}addReadable(e,t,r={}){return Rn(this,e,{Reader:xn(t),options:r})}addFileSystemEntry(e,t={}){return vn(this,e,t)}addFileSystemHandle(e,t={}){return vn(this,e,t)}addFile(e,t={}){return(t=r.assign({},t)).lastModDate||(t.lastModDate=new o(e.lastModified)),Rn(this,e.name,{data:e,Reader:()=>({readable:e.stream(),size:e.size}),options:t,uncompressedSize:e.size})}addData(e,t){return Rn(this,e,t)}importBlob(e,t){return this.importZip(new be(e),t)}importData64URI(e,t){return this.importZip(new ge(e),t)}importUint8Array(e,t){return this.importZip(new Ne(e),t)}importHttpContent(e,t){return this.importZip(new _e(e,t),t)}importReadable(e,t){return this.importZip({readable:e},t)}exportBlob(e={}){return this.exportZip(new ze(e.mimeType||"application/zip"),e)}exportData64URI(e={}){return this.exportZip(new ye(e.mimeType||"application/zip"),e)}exportUint8Array(e={}){return this.exportZip(new Be,e)}async exportWritable(e=new v,t={}){return await this.exportZip({writable:e},t),e}async importZip(e,t={}){await He(e);const s=new Fs(e,t),n=[],a=await s.getEntries();for(const e of a){let s=this;try{const a=e.filename.split("/"),i=a.pop();if(a.forEach(e=>{const t=s;if(s=s.getChildByName(e),s){if(!s.directory)throw new p(gn)}else s=new zn(this.fs,e,{data:null},t),n.push(s)}),e.directory){let t=s;if(i)if(t=s.getChildByName(i),t){if(!t.directory)throw new p(gn)}else t=new zn(this.fs,i,{data:null},s),n.push(t);t==this||t.data||(t.data=e)}else n.push(Rn(s,i,{data:e,Reader:Fn(r.assign({},t)),uncompressedSize:e.uncompressedSize,passThrough:t.passThrough}))}catch(t){try{t.cause={entry:e}}catch{}throw t}}return n}async exportZip(e,s={}){const n=this;(s=r.assign({},s)).bufferedWrite===J&&(s.bufferedWrite=!0);const[a]=await y.all([kn(n,s.readerOptions),He(e)]),i=new Ys(e,s);return await(async(e,s,n,a,i)=>{const o=s,l=new c;await async function e(s,c){async function d(c){const d=a.relativePath?c.getRelativeName(o):c.getFullname(),u=c.options||{};let p={};if(c.data instanceof as){const{externalFileAttributes:e,versionMadeBy:t,comment:s,lastModDate:n,creationDate:a,lastAccessDate:i,uncompressedSize:o,encrypted:l,zipCrypto:d,signature:u,compressionMethod:f,extraFieldAES:h}=c.data;if(p={externalFileAttributes:e,versionMadeBy:t,comment:s,lastModDate:n,creationDate:a,lastAccessDate:i},c.passThrough){let e,t;0===f&&(e=0),h&&(t=h.strength),p=r.assign(p,{passThrough:!0,encrypted:l,zipCrypto:d,signature:u,uncompressedSize:o,level:e,encryptionStrength:t,compressionMethod:f})}}await s.add(d,i.get(c),r.assign({},a,p,u,{directory:c.directory,onprogress:async e=>{if(a.onprogress){l.set(d,e);try{await a.onprogress(t.from(l.values()).reduce((e,t)=>e+t),n)}catch{}}}})),await e(s,c)}await(async()=>{if(a.bufferedWrite){const e=(await y.allSettled(c.children.map(d))).find(e=>"rejected"==e.status);if(e)throw e.reason}else for(const e of c.children)await d(e)})()}(e,s)})(i,n,(e=>{let r=0;const s=t.from(e);for(;s.length;){const e=s.pop();r+=e.uncompressedSize||0;for(const t of e.children)s.push(t)}return r})([n]),s,a),await i.close(),e.getData?e.getData():e.writable}getChildByName(e){const t=this.children;for(let r=0;r<t.length;r++){const s=t[r];if(s.name==e)return s}}isPasswordProtected(){const e=this.children;for(let t=0;t<e.length;t++)if(e[t].isPasswordProtected())return!0;return!1}async checkPassword(e,t={}){const r=this.children;return!(await y.all(r.map(r=>r.checkPassword(e,t)))).includes(!1)}}const Sn={FS:class{constructor(){An(this)}get children(){return this.root.children}remove(e){Dn(e);const t=[e];for(;t.length;){const e=t.pop();this.entries[e.id]=null;for(const r of e.children)t.push(r)}e.parent=J}move(e,t){if(e==this.root)throw new p("Root directory cannot be moved");if(!t.directory)throw new p("Target entry is not a directory");if(t.isDescendantOf(e))throw new p("Entry is a ancestor of target entry");if(e!=t){const r=t.getChildByName(e.name);if(r){if(r!=e)throw new p(gn)}else Dn(e),e.parent=t,t.children.push(e),((e,t)=>{const r=[t];for(;r.length;){const t=r.pop();e.entries[t.id]=t;for(const e of t.children)r.push(e)}})(this,e)}}find(e){const t=e.split("/");let r=this.root;for(let e=0;r&&e<t.length;e++)r=r.getChildByName(t[e]);return r||(r=this.entries.find(t=>t&&(t==this.root||t.isDescendantOf(this.root))&&t.getRelativeName()==e)),r}getById(e){return this.entries[e]}getChildByName(e){return this.root.getChildByName(e)}addDirectory(e,t){return this.root.addDirectory(e,t)}addText(e,t,r){return this.root.addText(e,t,r)}addBlob(e,t,r){return this.root.addBlob(e,t,r)}addData64URI(e,t,r){return this.root.addData64URI(e,t,r)}addUint8Array(e,t,r){return this.root.addUint8Array(e,t,r)}addHttpContent(e,t,r){return this.root.addHttpContent(e,t,r)}addReadable(e,t,r){return this.root.addReadable(e,t,r)}addFileSystemEntry(e,t){return this.root.addFileSystemEntry(e,t)}addFileSystemHandle(e,t){return this.root.addFileSystemHandle(e,t)}addFile(e,t){return this.root.addFile(e,t)}addData(e,t){return this.root.addData(e,t)}importBlob(e,t){return An(this),this.root.importBlob(e,t)}importData64URI(e,t){return An(this),this.root.importData64URI(e,t)}importUint8Array(e,t){return An(this),this.root.importUint8Array(e,t)}importHttpContent(e,t){return An(this),this.root.importHttpContent(e,t)}importReadable(e,t){return An(this),this.root.importReadable(e,t)}importZip(e,t){return An(this),this.root.importZip(e,t)}exportBlob(e){return this.root.exportBlob(e)}exportData64URI(e){return this.root.exportData64URI(e)}exportUint8Array(e){return this.root.exportUint8Array(e)}exportWritable(e,t){return this.root.exportWritable(e,t)}exportZip(e,t){return this.root.exportZip(e,t)}isPasswordProtected(){return this.root.isPasswordProtected()}checkPassword(e,t){return this.root.checkPassword(e,t)}},ZipDirectoryEntry:zn,ZipFileEntry:bn};function xn(e){let t;return()=>{if(t)throw new p("Readable stream already consumed");return t=!0,{readable:e}}}function Fn(e){return class extends we{constructor(e,t={}){super(),this.entry=e,this.options=t}async init(){const t=this;t.size=t.entry.uncompressedSize;const s=await t.entry.getData(new ze,r.assign({},e,t.options));t.data=s,t.blobReader=new be(s),super.init()}readUint8Array(e,t){return this.blobReader.readUint8Array(e,t)}}}async function kn(e,t){const r=[],s=[e],n=new c;for(;s.length;){const e=s.pop();for(const t of e.children)t.directory?s.push(t):r.push(t)}return await y.all(r.map(async e=>{const r=e.reader=new e.Reader(e.data,t);n.set(e,r);try{await He(r)}catch(t){try{t.entryId=e.id,t.cause={entry:e}}catch{}throw t}r.size!==J&&(e.uncompressedSize=r.size)})),n}function Dn(e){if(e.parent){const t=e.parent.children;t.forEach((r,s)=>{r.id==e.id&&t.splice(s,1)})}}function vn(e,t,s){return async function e(t,n,a){if(n)try{if((n.isFile||n.isDirectory)&&(n=await En(n)),"file"==n.kind){const e=await n.getFile();a.push(t.addData(e.name,{Reader:()=>({readable:e.stream(),size:e.size}),options:r.assign({},{lastModDate:new o(e.lastModified)},s),uncompressedSize:e.size}))}else if("directory"==n.kind){const r=t.addDirectory(n.name);a.push(r);for await(const t of n.values())await e(r,t,a)}}catch(e){const t=e.message+(n?" ("+n.name+")":"");throw new p(t,{cause:e})}return a}(e,t,[])}async function En(e){const t={name:e.name};if(e.isFile&&(t.kind="file",t.getFile=()=>new y((t,r)=>e.file(t,r))),e.isDirectory){t.kind="directory";const r=await(async e=>{const t=[];function r(e,s,n){e.readEntries(async a=>{if(a.length){for(const e of a)t.push(await En(e));r(e,s,n)}else s(t)},n)}return await new y((t,s)=>r(e.createReader(),t,s)),{[Symbol.iterator](){let e=0;return{next(){const r={value:t[e],done:e==t.length};return e++,r}}}}})(e);t.values=()=>r}return t}function An(e){e.entries=[],e.entryIdCounter=0,e.root=new zn(e)}function Rn(e,t,r,s){if(e.directory)return s?new zn(e.fs,t,r,e):new bn(e.fs,t,r,e);throw new p("Parent entry is not a directory")}e.fs=Sn});