@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.
package/BENCHMARKS.md ADDED
@@ -0,0 +1,168 @@
1
+ # Benchmarks
2
+
3
+ A fair, reproducible comparison of **@zip.js/zip.js** against
4
+ [jszip](https://github.com/Stuk/jszip), [fflate](https://github.com/101arrowz/fflate)
5
+ and [archiver](https://github.com/archiverjs/node-archiver) on a set of realistic
6
+ workloads.
7
+
8
+ The numbers below are honest: zip.js wins clearly on some workloads and loses on
9
+ others. The goal is to show *where* each library is the right tool, and to give you a
10
+ harness you can re-run on your own hardware — the results are machine-specific and you
11
+ should not trust anyone's benchmark (including this one) without reproducing it.
12
+
13
+ > **TL;DR** — For compressing large or multiple entries, zip.js is the fastest option
14
+ > in the field, and it is the only one that parallelizes compression across CPU cores
15
+ > **without spawning a single Web Worker** — it lets the platform's native
16
+ > `CompressionStream` run on the threadpool while you simply issue concurrent `add()`
17
+ > calls. It also streams arbitrarily large files at a flat, low memory ceiling. For
18
+ > deflating thousands of tiny buffers in one shot, **fflate** remains the throughput
19
+ > and footprint champion.
20
+
21
+ ## Environment
22
+
23
+ | | |
24
+ |---|---|
25
+ | Machine | Apple M2, 8 cores (4 performance + 4 efficiency), 16 GB RAM |
26
+ | OS | macOS 26.5.1 (arm64) |
27
+ | Runtime | Node.js v24.12.0 |
28
+ | zip.js | 2.8.29 |
29
+ | jszip | 3.10.1 |
30
+ | fflate | 0.8.3 |
31
+ | archiver | 8.0.0 |
32
+
33
+ ## Method
34
+
35
+ - **Isolation.** Each `(library, operation, workload)` combination runs in its own
36
+ freshly-spawned Node process under `/usr/bin/time -l`, so there is no cross-library
37
+ GC or heap contamination and peak memory is a true per-library figure.
38
+ - **Timing.** `performance.now()` around the measured operation only. Every combination
39
+ runs **3 times**; the table reports the **median**.
40
+ - **Memory.** Peak resident set size (RSS) reported by `/usr/bin/time -l`. The "peak"
41
+ column is the delta over an empty-process baseline (~42 MB), i.e. the memory
42
+ attributable to the work.
43
+ - **Fair work.** All libraries compress at **DEFLATE level 6**. Output sizes are shown
44
+ so you can confirm each library did equivalent work. The corpus is generated from a
45
+ seeded PRNG, so every library sees byte-for-byte identical input.
46
+ - **zip.js modes.** zip.js is measured both **single-threaded** (apples-to-apples with
47
+ the single-threaded libraries) and with its **Web Worker** pool, so the worker
48
+ overhead is never hidden.
49
+
50
+ ## Compression — single process, single thread
51
+
52
+ Level-6 DEFLATE, one entry (or one batch) compressed in the main thread. This is the
53
+ apples-to-apples comparison against the single-threaded libraries.
54
+
55
+ | Workload | @zip.js/zip.js | jszip | fflate | archiver |
56
+ |---|--:|--:|--:|--:|
57
+ | Compressible text (20 MB) | **795 ms** | 1770 ms | 953 ms | 720 ms |
58
+ | Incompressible data (20 MB) | 446 ms | 883 ms | **306 ms** | 366 ms |
59
+ | Already-compressed media (20 MB) | 452 ms | 886 ms | **298 ms** | 358 ms |
60
+ | 5,000 files × ~2 KB | 845 ms | 887 ms | **287 ms** | 419 ms |
61
+
62
+ Peak memory for the same runs (Δ over baseline):
63
+
64
+ | Workload | @zip.js/zip.js | jszip | fflate | archiver |
65
+ |---|--:|--:|--:|--:|
66
+ | Compressible text (20 MB) | 92 MB | 65 MB | **60 MB** | 82 MB |
67
+ | Incompressible data (20 MB) | 141 MB | 93 MB | 106 MB | **83 MB** |
68
+ | Already-compressed media (20 MB) | 142 MB | 94 MB | 106 MB | **83 MB** |
69
+ | 5,000 files × ~2 KB | 266 MB | 270 MB | **102 MB** | 118 MB |
70
+
71
+ zip.js is fastest on compressible text and competitive with archiver elsewhere, at
72
+ roughly comparable compressed sizes. **fflate** is the clear winner on raw throughput
73
+ and footprint for incompressible data and for large numbers of tiny files — if that is
74
+ your workload, use fflate.
75
+
76
+ ## Parallelism & codec backends — 8 files × 8 MB, single process
77
+
78
+ This is the headline. The same 64 MB of compressible entries, compressed several ways
79
+ in a **plain Node process** (no worker threads unless noted). zip.js can select its
80
+ codec backend at runtime — native `CompressionStream`, the bundled WebAssembly zlib, or
81
+ a pure-JavaScript zlib port — and it can issue `add()` calls concurrently.
82
+
83
+ | Configuration | Median time | vs jszip |
84
+ |---|--:|--:|
85
+ | **zip.js — `CompressionStream`, concurrent `add()`** | **657 ms** | **8.8×** |
86
+ | fflate — async (its own worker pool) | 729 ms | 7.9× |
87
+ | archiver — Node zlib (libuv threadpool) | 2266 ms | 2.5× |
88
+ | zip.js — `CompressionStream`, sequential | 2453 ms | 2.3× |
89
+ | fflate — `zipSync` (single thread) | 3103 ms | 1.9× |
90
+ | zip.js — WASM zlib | 4176 ms | 1.4× |
91
+ | zip.js — pure-JS zlib | 4709 ms | 1.2× |
92
+ | jszip (pako, single thread) | 5758 ms | 1.0× |
93
+
94
+ **The point:** zip.js with the native `CompressionStream` goes from **2453 ms
95
+ sequential to 657 ms with concurrent `add()` — a 3.7× speedup — using no Web Workers at
96
+ all.** The native codec runs on the platform's threadpool, so independent entries
97
+ compress on multiple cores while your code stays on the main thread. That makes it the
98
+ fastest configuration measured, narrowly ahead of fflate's dedicated worker pool.
99
+
100
+ One honest caveat, visible in the table: **only the native `CompressionStream` backend
101
+ parallelizes this way.** The WASM and pure-JS backends run synchronously on the main
102
+ thread, so concurrent `add()` does not speed them up (4176 ms and 4709 ms whether
103
+ sequential or "parallel"). Use those backends when a native `CompressionStream` is
104
+ unavailable or when you need byte-identical zlib output; use the native backend when you
105
+ want this parallelism.
106
+
107
+ ## Decompression
108
+
109
+ Level-6 archives, read back and fully materialized. archiver has no unzip API, so it is
110
+ excluded.
111
+
112
+ | Workload | @zip.js/zip.js | jszip | fflate |
113
+ |---|--:|--:|--:|
114
+ | Compressible text (20 MB) | **65 ms** | 143 ms | 82 ms |
115
+ | 5,000 files × ~2 KB | 565 ms | 453 ms | **89 ms** |
116
+
117
+ zip.js has the fastest large-stream decompression. On thousands of tiny entries the
118
+ per-entry setup cost dominates and **fflate is dramatically faster and lighter** — again
119
+ the right tool when you are unpacking many small files.
120
+
121
+ ## Streaming a large file — 256 MB, disk → zip → disk
122
+
123
+ The input is streamed from disk and the archive is streamed back to disk; neither is
124
+ ever fully held in memory (for the libraries that support it).
125
+
126
+ | Library | Median time | Peak memory |
127
+ |---|--:|--:|
128
+ | archiver | 9183 ms | 111 MB |
129
+ | zip.js (workers) | 9893 ms | **99 MB** |
130
+ | zip.js (1 thread) | 10110 ms | **99 MB** |
131
+ | fflate | 10613 ms | 87 MB |
132
+ | jszip | 22358 ms | 527 MB |
133
+
134
+ zip.js, fflate and archiver all hold memory **flat** while streaming — zip.js peaks at
135
+ ~99 MB regardless of the 256 MB input, thanks to real backpressure through the
136
+ compression pipeline. **jszip buffers the entire file** and needs ~527 MB, at more than
137
+ twice the wall-clock time. If you process files that do not fit comfortably in memory,
138
+ avoid jszip.
139
+
140
+ ## When to pick which
141
+
142
+ - **Choose zip.js** for the fastest compression of large or multiple entries
143
+ (parallelism with no Web Workers), the fastest large-stream decompression, flat
144
+ low-memory streaming of huge files, and the broadest ZIP feature set in one library —
145
+ AES & ZipCrypto encryption, Zip64, split/multi-volume archives, and an optional Web
146
+ Worker pool.
147
+ - **Choose fflate** when you deflate thousands of tiny buffers in a single call and want
148
+ the smallest memory footprint and the highest raw synchronous throughput.
149
+ - **archiver** is a solid streaming compressor on Node but cannot read archives.
150
+ - **jszip** is convenient but the slowest here and buffers whole files in memory.
151
+
152
+ ## Reproduce
153
+
154
+ The harness lives in [`benchmarks/`](benchmarks/). It has no ties to the machine above;
155
+ run it on yours.
156
+
157
+ ```sh
158
+ cd benchmarks
159
+ npm install # jszip, fflate, archiver (zip.js is used from the repo)
160
+ npm run corpus # generate the deterministic datasets under .corpus/
161
+ node bench.js # the head-to-head tables (compress / decompress / disk streaming)
162
+ node bench-backends.js # the parallelism & codec-backend matrix
163
+ ```
164
+
165
+ Both scripts write JSON and a human-readable log to `benchmarks/results/`. Set
166
+ `RUNS=<n>` to change the number of repetitions (default 3). The datasets are generated
167
+ from a seeded PRNG (`benchmarks/lib/corpus.js`), so every run — and every library —
168
+ sees identical bytes.
package/deno.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zip-js/zip-js",
3
- "version": "2.8.28",
3
+ "version": "2.8.29",
4
4
  "exports": {
5
5
  ".": "./index.js"
6
6
  },
package/dist/zip-core.js CHANGED
@@ -1778,14 +1778,15 @@
1778
1778
  function pipeThroughCommpressionStream(readable, useCompressionStream, options, CompressionStreamNative, CompressionStreamZlib, CompressionStream) {
1779
1779
  const Stream = useCompressionStream && CompressionStreamNative ? CompressionStreamNative : CompressionStreamZlib || CompressionStream;
1780
1780
  const format = options.deflate64 ? FORMAT_DEFLATE64_RAW : FORMAT_DEFLATE_RAW;
1781
+ let codecStream;
1781
1782
  try {
1782
- readable = pipeThrough(readable, new Stream(format, options));
1783
+ codecStream = new Stream(format, options);
1783
1784
  } catch (error) {
1784
1785
  if (useCompressionStream) {
1785
1786
  if (CompressionStreamZlib) {
1786
- readable = pipeThrough(readable, new CompressionStreamZlib(format, options));
1787
+ codecStream = new CompressionStreamZlib(format, options);
1787
1788
  } else if (CompressionStream) {
1788
- readable = pipeThrough(readable, new CompressionStream(format, options));
1789
+ codecStream = new CompressionStream(format, options);
1789
1790
  } else {
1790
1791
  throw error;
1791
1792
  }
@@ -1793,13 +1794,62 @@
1793
1794
  throw error;
1794
1795
  }
1795
1796
  }
1796
- return readable;
1797
+ // The native CompressionStream/DecompressionStream and the pure-JS zlib port do not signal
1798
+ // backpressure on their writable side (their `ready` never pends), so a plain pipeThrough drains
1799
+ // the whole source into them and peak memory grows with the entry size. Awaiting each write()
1800
+ // paces the source to the codec's consumption rate, keeping streaming memory bounded. The WASM
1801
+ // codec already backpressures, so this is a no-op cost for it.
1802
+ return pipeThroughBackpressured(readable, codecStream);
1797
1803
  }
1798
1804
 
1799
1805
  function pipeThrough(readable, transformStream) {
1800
1806
  return readable.pipeThrough(transformStream);
1801
1807
  }
1802
1808
 
1809
+ // Like readable.pipeThrough(transformStream), but drives the writable side manually and awaits each
1810
+ // write() so that a codec which under-reports backpressure cannot pull the whole source into memory.
1811
+ // Errors propagate in both directions: a source error aborts the codec; a downstream cancel/error
1812
+ // (surfaced through the codec's writable rejecting) cancels the source.
1813
+ function pipeThroughBackpressured(readable, transformStream) {
1814
+ const writer = transformStream.writable.getWriter();
1815
+ const reader = readable.getReader();
1816
+ pump();
1817
+ return transformStream.readable;
1818
+
1819
+ async function pump() {
1820
+ try {
1821
+ for (; ;) {
1822
+ await writer.ready;
1823
+ const result = await reader.read();
1824
+ if (result.done) {
1825
+ await writer.close();
1826
+ break;
1827
+ }
1828
+ await writer.write(result.value);
1829
+ }
1830
+ } catch (error) {
1831
+ await abort(writer, error);
1832
+ await cancel(reader, error);
1833
+ }
1834
+ }
1835
+ }
1836
+
1837
+ async function abort(writer, error) {
1838
+ try {
1839
+ await writer.abort(error);
1840
+ } catch {
1841
+ // the writable may already be errored/closed
1842
+ }
1843
+ }
1844
+
1845
+ async function cancel(reader, error) {
1846
+ try {
1847
+ await reader.cancel(error);
1848
+ } catch {
1849
+ // the readable may already be errored/closed
1850
+ }
1851
+ }
1852
+
1803
1853
  // DecompressionStream implementations can fail with a message-less TypeError on malformed
1804
1854
  // input; give these errors an identifiable message (errors raised by the other stages of
1805
1855
  // the pipeline, e.g. ERR_INVALID_PASSWORD, always carry a message and pass through as-is)
@@ -2127,7 +2177,15 @@
2127
2177
  try {
2128
2178
  await initModule(config);
2129
2179
  } catch {
2130
- options.useCompressionStream = true;
2180
+ // The WASM module failed to load. Fall back to the native CompressionStream only if the
2181
+ // zlib codec that would otherwise run depends on that module; a self-contained codec
2182
+ // supplied through config (e.g. the pure-JS port) stays usable and is kept as requested.
2183
+ const ZlibStream = options.codecType.startsWith(CODEC_DEFLATE) ?
2184
+ config.CompressionStreamZlib :
2185
+ config.DecompressionStreamZlib;
2186
+ if (!ZlibStream || ZlibStream.requiresModule) {
2187
+ options.useCompressionStream = true;
2188
+ }
2131
2189
  }
2132
2190
  }
2133
2191
  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:f,Uint8Array:p,Uint16Array:w,Uint32Array:h,DataView:m,Blob:g,Promise:y,TextEncoder:b,TextDecoder:S,document:z,crypto:x,btoa:E,TransformStream:F,ReadableStream:k,WritableStream:R,CompressionStream:D,DecompressionStream:A,navigator:v,Worker:T}="undefined"!=typeof globalThis?globalThis:this||self;var _=void 0!==z?z.currentScript:null;const C=4294967295,U=65535,N=255,O=67324752,I=134695760,M=I,W=33639248,L=101010256,P=101075792,H=117853008,B=22,Z=21589,V=2048,q=16384,K=2048,j=1024,Y="/",G=30,X=new o(2107,11,31),J=new o(1980,0,1),Q=void 0,$=1/0,ee="undefined",te="function";let re=2;try{typeof v!=ee&&v.hardwareConcurrency&&(re=v.hardwareConcurrency)}catch{}const se={workerURI:"./core/web-worker-wasm.js",wasmURI:"./core/streams/zlib-wasm/zlib-streams.wasm",chunkSize:65536,maxWorkers:re,terminateWorkerTimeout:5e3,workerStarvationTimeout:5e3,useWebWorkers:!0,useCompressionStream:!0,CompressionStream:typeof D!=ee&&D,DecompressionStream:typeof A!=ee&&A},ne=r.assign({},se);function ae(){return ne}function ie(e){return i.max(e.chunkSize,64)}function oe(e){const{baseURI:t,chunkSize:r,maxWorkers:s,terminateWorkerTimeout:n,workerStarvationTimeout:a,useCompressionStream:i,useWebWorkers:o,CompressionStream:c,DecompressionStream:l,CompressionStreamZlib:d,DecompressionStreamZlib:u,workerURI:f,wasmURI:p}=e;ce("baseURI",t),ce("wasmURI",p),ce("workerURI",f),ce("chunkSize",r),ce("maxWorkers",s),ce("terminateWorkerTimeout",n),ce("workerStarvationTimeout",a),ce("useCompressionStream",i),ce("useWebWorkers",o),ce("CompressionStream",c),ce("DecompressionStream",l),ce("CompressionStreamZlib",d),ce("DecompressionStreamZlib",u)}function ce(e,t){t!==Q&&(ne[e]=t)}const le=[];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;le[e]=t}class de{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^le[255&(t^e[r])];this.crc=t}get(){return~this.crc}}class ue extends F{constructor(){let e;const t=new de;super({transform(e,r){t.append(e),r.enqueue(e)},flush(){const r=new p(4);new m(r.buffer).setUint32(0,t.get()),e.value=r}}),e=this}}function fe(e){if(typeof b==ee){const t=new p((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 pe={concat(e,t){if(0===e.length||0===t.length)return e.concat(t);const r=e[e.length-1],s=pe.getPartial(r);return 32===s?e.concat(t):pe._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)+pe.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]=pe.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=pe.getPartial(n);return s.push(pe.partial(t+a&31,t+a>32?r:s.pop(),1)),s}},we={bytes:{fromBits(e){const t=pe.bitLength(e)/8,r=new p(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(pe.partial(8*(3&r),s)),t}}},he=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=we.utf8String.toBits(e));const r=t._buffer=pe.concat(t._buffer,e),s=t._length,n=t._length=s+pe.bitLength(e);if(n>9007199254740991)throw new f("Cannot hash more than 2^53 - 1 bits");const a=new h(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=pe.concat(t,[pe.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}},me={importKey:e=>new me.hmacSha1(we.bytes.toBits(e)),pbkdf2(e,t,r,s){if(r=r||1e4,0>s||0>r)throw new f("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 p=0;const w=pe;for(t=we.bytes.toBits(t),l=1;(n||1)>p;l++){for(a=i=e.encrypt(w.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)>p&&o<a.length;o++)u.setInt32(p,a[o]),p+=4}return d.slice(0,s/8)},hmacSha1:class{constructor(e){const t=this,r=t._hash=he,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 f("encrypt on already updated hmac called!");return this.update(e),this.digest(e)}}},ge=typeof x!=ee&&typeof x.getRandomValues==te,ye="Invalid password",be="Invalid signature",Se="zipjs-abort-check-password";function ze(e){if(ge)return x.getRandomValues(e);throw new f("Crypto API not supported")}const xe=16,Ee={name:"PBKDF2"},Fe=r.assign({hash:{name:"HMAC"}},Ee),ke=r.assign({iterations:1e3,hash:{name:"SHA-1"}},Ee),Re=["deriveBits"],De=[8,12,16],Ae=[16,24,32],ve=10,Te=[0,0,0,0],_e=typeof x!=ee,Ce=_e&&x.subtle,Ue=_e&&typeof Ce!=ee,Ne=we.bytes,Oe=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 f("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,f=257*n[a]^16843008*a;for(let r=0;4>r;r++)e[r][d]=f=f<<24^f>>>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 f("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,p,w,h=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[h>>>24]^o[m>>16&255]^c[g>>8&255]^l[255&y]^r[b],p=i[m>>>24]^o[g>>16&255]^c[y>>8&255]^l[255&h]^r[b+1],w=i[g>>>24]^o[y>>16&255]^c[h>>8&255]^l[255&m]^r[b+2],y=i[y>>>24]^o[h>>16&255]^c[m>>8&255]^l[255&g]^r[b+3],b+=4,h=u,m=p,g=w;for(let e=0;4>e;e++)n[t?3&-e:e]=d[h>>>24]<<24^d[m>>16&255]<<16^d[g>>8&255]<<8^d[255&y]^r[b++],u=h,h=m,m=g,g=y,y=u;return n}},Ie=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=pe.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 pe.clamp(t,n)}},Me=me.hmacSha1;let We=_e&&Ue&&typeof Ce.importKey==te,Le=_e&&Ue&&typeof Ce.deriveBits==te;class Pe extends F{constructor({password:e,rawPassword:t,encryptionStrength:s,checkPasswordOnly:n}){super({start(){r.assign(this,{ready:new y(e=>this.resolveReady=e),password:Ve(e,t),strength:s-1,pending:new p})},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 Ze(e,t,r,Ke(s,0,De[t])),a=Ke(s,De[t]);if(n[0]!=a[0]||n[1]!=a[1])throw new f(ye)})(r,a,s,Ke(e,0,De[a]+2)),e=Ke(e,De[a]+2),n?t.error(new f(Se)):i()):await o;const c=new p(e.length-ve-(e.length-ve)%xe);t.enqueue(Be(r,e,c,0,ve,!0))},async flush(e){const{ctr:t,hmac:r,pending:s,ready:n}=this;if(r&&t){await n;const a=Ke(s,0,s.length-ve),i=Ke(s,s.length-ve);let o=new p;if(a.length){const e=Ye(Ne,a);r.update(e);const s=t.update(e);o=je(Ne,s)}const c=Ke(je(Ne,r.digest()),0,ve);let l=s.length<ve?1:0;for(let e=0;ve>e;e++)l|=c[e]^i[e];if(l)throw new f(be);e.enqueue(o)}}})}}class He extends F{constructor({password:e,rawPassword:t,encryptionStrength:s}){let n;super({start(){r.assign(this,{ready:new y(e=>this.resolveReady=e),password:Ve(e,t),strength:s-1,pending:new p})},async transform(e,t){const r=this,{password:s,strength:n,resolveReady:a,ready:i}=r;let o=new p;s?(o=await(async(e,t,r)=>{const s=ze(new p(De[t]));return qe(s,await Ze(e,t,r,s))})(r,n,s),a()):await i;const c=new p(o.length+e.length-e.length%xe);c.set(o,0),t.enqueue(Be(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 p;if(s.length){const e=t.update(Ye(Ne,s));r.update(e),i=je(Ne,e)}n.signature=je(Ne,r.digest()).slice(0,ve),e.enqueue(qe(i,n.signature))}}}),n=this}}function Be(e,t,r,s,n,a){const{ctr:i,hmac:o,pending:c}=e;c.length&&(t=qe(c,t));const l=t.length-n;let d;for(r=((e,t)=>{if(t&&t>e.length){const r=e;(e=new p(t)).set(r,0)}return e})(r,s+(l-l%xe)),d=0;l-xe>=d;d+=xe){const e=Ye(Ne,Ke(t,d,d+xe));a&&o.update(e);const n=i.update(e);a||o.update(n),r.set(je(Ne,n),d+s)}return e.pending=Ke(t,d),r}async function Ze(e,s,n,a){e.password=null;const i=await(async(e,t,r,s,n)=>{if(!We)return me.importKey(t);try{return await Ce.importKey("raw",t,r,!1,n)}catch{return We=!1,me.importKey(t)}})(0,n,Fe,0,Re),o=await(async(e,t,r)=>{if(!Le)return me.pbkdf2(t,e.salt,ke.iterations,r);try{return await Ce.deriveBits(e,t,r)}catch{return Le=!1,me.pbkdf2(t,e.salt,ke.iterations,r)}})(r.assign({salt:a},ke),i,8*(2*Ae[s]+2)),c=new p(o),l=Ye(Ne,Ke(c,0,Ae[s])),d=Ye(Ne,Ke(c,Ae[s],2*Ae[s])),u=Ke(c,2*Ae[s]);return r.assign(e,{keys:{key:l,authentication:d,passwordVerification:u},ctr:new Ie(new Oe(l),t.from(Te)),hmac:new Me(d)}),u}function Ve(e,t){return t===Q?fe(e):t}function qe(e,t){let r=e;return e.length+t.length&&(r=new p(e.length+t.length),r.set(e,0),r.set(t,e.length)),r}function Ke(e,t,r){return e.subarray(t,r)}function je(e,t){return e.fromBits(t)}function Ye(e,t){return e.toBits(t)}class Ge extends F{constructor({password:e,rawPassword:t,passwordVerification:s,checkPasswordOnly:n}){super({start(){r.assign(this,{password:e,rawPassword:t,passwordVerification:s}),$e(this,e,t)},transform(e,t){const r=this;if(r.password||r.rawPassword){const t=Je(r,e.subarray(0,12));if(r.password=r.rawPassword=null,0!=(t.at(-1)^r.passwordVerification))throw new f(ye);e=e.subarray(12)}n?t.error(new f(Se)):t.enqueue(Je(r,e))}})}}class Xe extends F{constructor({password:e,rawPassword:t,passwordVerification:s}){super({start(){r.assign(this,{password:e,rawPassword:t,passwordVerification:s}),$e(this,e,t)},transform(e,t){const r=this;let s,n;if(r.password||r.rawPassword){r.password=r.rawPassword=null;const t=ze(new p(12));t[11]=r.passwordVerification,s=new p(e.length+t.length),s.set(Qe(r,t),0),n=12}else s=new p(e.length),n=0;s.set(Qe(r,e),n),t.enqueue(s)}})}}function Je(e,t){const r=new p(t.length);for(let s=0;s<t.length;s++)r[s]=tt(e)^t[s],et(e,r[s]);return r}function Qe(e,t){const r=new p(t.length);for(let s=0;s<t.length;s++)r[s]=tt(e)^t[s],et(e,t[s]);return r}function $e(e,t,s){const n=[305419896,591751049,878082192];if(r.assign(e,{keys:n,crcKey0:new de(n[0]),crcKey2:new de(n[2])}),s)for(let t=0;t<s.length;t++)et(e,s[t]);else for(let r=0;r<t.length;r++)et(e,t.charCodeAt(r))}function et(e,t){let[,r]=e.keys;e.crcKey0.append([t]);const s=~e.crcKey0.get();r=st(i.imul(st(r+rt(s)),134775813)+1),e.crcKey2.append([r>>>24]);const n=~e.crcKey2.get();e.keys=[s,r,n]}function tt(e){const t=2|e.keys[2];return rt(i.imul(t,1^t)>>>8)}function rt(e){return 255&e}function st(e){return 4294967295&e}const nt="Invalid uncompressed size",at="Invalid compressed data";class it extends F{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,f,p=super.readable;a&&!o||!c||(u=new ue,p=dt(p,u)),n&&(p=lt(p,i,{level:l,chunkSize:t},s,r,s)),a&&(o?p=dt(p,new Xe(e)):(f=new He(e),p=dt(p,f))),ct(d,p,()=>{let e;a&&!o&&(e=f.signature),a&&!o||!c||(e=new m(u.value.buffer).getUint32(0)),d.signature=e})}}class ot extends F{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,p,w=super.readable;a&&(n?w=dt(w,new Ge(e)):(p=new Pe(e),w=dt(w,p))),c&&(w=lt(w,l,{chunkSize:t,deflate64:d},s,r,s),w=(e=>{const t=e.getReader();return new k({async pull(e){let r;try{r=await t.read()}catch(e){if(e&&e.message)throw e;const t=new f(at);throw t.cause=e,t}const{value:s,done:n}=r;n?e.close():e.enqueue(s)},cancel:e=>t.cancel(e)})})(w)),a&&!n||!i||(u=new ue,w=dt(w,u)),ct(this,w,()=>{if((!a||n)&&i){const e=new m(u.value.buffer);if(o!=e.getUint32(0,!1))throw new f(be)}})}}function ct(e,t,s){t=dt(t,new F({flush:s})),r.defineProperty(e,"readable",{get:()=>t})}function lt(e,t,r,s,n,a){const i=t&&s?s:n||a,o=r.deflate64?"deflate64-raw":"deflate-raw";try{e=dt(e,new i(o,r))}catch(s){if(!t)throw s;if(n)e=dt(e,new n(o,r));else{if(!a)throw s;e=dt(e,new a(o,r))}}return e}function dt(e,t){return e.pipeThrough(t)}const ut="data",ft="deflate",pt="inflate";class wt extends F{constructor(e,t){super({});const s=this,{codecType:n}=e;let a;n.startsWith(ft)?a=it:n.startsWith(pt)&&(a=ot),s.outputSize=0;let i=0;const o=new a(e,t),c=super.readable,l=new F({transform(e,t){e&&e.length&&(i+=e.length,t.enqueue(e))},flush(){r.assign(s,{inputSize:i})}}),d=new F({transform(t,r){if(t&&t.length&&(r.enqueue(t),s.outputSize+=t.length,e.outputSize!==Q&&s.outputSize>e.outputSize))throw new f(nt)},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 ht extends F{constructor(e){let t;1>e&&(e=65536),super({transform:(r,s)=>{if(t){const e=new p(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 mt={type:"module"},gt="error";let yt,bt,St,zt,xt=!0;try{xt=typeof structuredClone==te&&structuredClone(new DOMException("","AbortError")).code!==Q}catch{}class Et{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 ht(ie(a))).pipeThrough(new Ft(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)}}}),yt===Q&&(yt=typeof T!=ee),(o&&yt?Dt:Rt)(e,a)}}class Ft extends F{constructor({onstart:e,onprogress:t,size:r,onend:s}){let n=0;super({async start(){e&&await kt(e,r)},async transform(e,s){n+=e.length,t&&await kt(t,n,r),s.enqueue(e)},async flush(){s&&await kt(s,n)}})}}async function kt(e,...t){try{await e(...t)}catch{}}function Rt(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 wt(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 Dt(e,t){const{baseURI:s,chunkSize:n}=t;let{wasmURI:a}=t;if(!e.interface){let i;typeof a==te&&(a=a());try{i=vt(e.workerURI,s,e)}catch{return yt=!1,Rt(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 F,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=_t({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 f(),await l,e}catch(e){await f(),d();try{await l}catch{}throw e}async function f(){if(!u&&!c.locked)try{await c.getWriter().close()}catch{}}})(e,{chunkSize:n,wasmURI:a,baseURI:s})}})}return e.interface}function At(e){const{worker:t}=e;if(t)try{t.terminate()}catch{}e.interface=null}function vt(e,t,s,n,a=!0){let i,o,c;if(St===Q||bt!==e){const r=typeof e==te;o=r?e(a):e;const l=o.startsWith("data:"),d=o.startsWith("blob:");if(l||d){n===Q&&(n=!1),n&&(c=mt);try{i=new T(o,c)}catch(a){if(d)try{u.revokeObjectURL(o)}catch{}if(r&&d)return vt(e,t,s,n,!1);if(n)throw a;return vt(e,t,s,!0,!1)}}else{n===Q&&(n=!0),n&&(c=mt);try{o=new u(o,t)}catch{}try{i=new T(o,c)}catch(r){if(n)throw r;return vt(e,t,s,!1,a)}}bt=e,St=o,zt=c}else i=new T(St,zt);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:w,generation:h}=t,m=()=>t.generation!=h;try{if(o){const{message:e,stack:t,code:s,name:n,outputSize:a}=o,i=new f(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()||_t({type:ut,value:e,done:r,messageId:a},t)}s==ut&&(await l.ready,await l.write(new p(n)),m()||_t({type:"ack",messageId:a},t)),"close"==s&&g(null,i)}}catch(o){m()||(At(t),g(o))}function g(e,t){m()||(e?u(e):d(t),l&&l.releaseLock(),w())}})(e,s)),i.addEventListener(gt,e=>Tt(e,s)),i.addEventListener("messageerror",e=>Tt(e,s)),i}function Tt(e,t){e.preventDefault&&e.preventDefault();const{rejectResult:r,writer:s,onTaskFinished:n}=t;At(t),r&&(r(e.error||new f(e.message||gt)),s&&s.releaseLock(),n())}function _t(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&&xt?(n&&i.push(n),a&&i.push(a)):e.readable=e.writable=null,i.length)try{return t.postMessage(e,i),!0}catch{xt=!1,e.readable=e.writable=null,t.postMessage(e)}else t.postMessage(e)}catch(e){throw r&&r.releaseLock(),e}}let Ct=[];const Ut=[];let Nt,Ot,It=0;async function Mt(e,t){const{options:r,config:s}=t,{transferStreams:a,useWebWorkers:i,useCompressionStream:o,compressed:c,signed:l,encrypted:d}=r,{workerURI:u,maxWorkers:f}=s;t.transferStreams=a||a===Q;const p=!(c||l||d||t.transferStreams);return t.useWebWorkers=!p&&(i||i===Q&&s.useWebWorkers),t.workerURI=t.useWebWorkers&&u?u:Q,r.useCompressionStream=o||o===Q&&s.useCompressionStream,(await(async()=>{const r=Ct.find(e=>!e.busy);if(r)return Bt(r),new Et(r,e,t,w);if(Ct.length<f){const r={indexWorker:It};return It++,Ct.push(r),new Et(r,e,t,w)}return new y(r=>{Ut.push({resolve:r,stream:e,workerOptions:t}),Ot=s.workerStarvationTimeout,Wt()})})()).run();function w(e){if(Lt(),Ut.length){const[{resolve:t,stream:r,workerOptions:s}]=Ut.splice(0,1);t(new Et(e,r,s,w)),Wt()}else e.worker?(Bt(e),((e,t)=>{const{config:r}=t,{terminateWorkerTimeout:s}=r;n.isFinite(s)&&s>=0&&(e.terminated?e.terminated=!1:e.terminateTimeout=setTimeout(async()=>{Ct=Ct.filter(t=>t!=e);try{await e.terminate()}catch{}},s))})(e,t)):Ct=Ct.filter(t=>t!=e)}}function Wt(){!Nt&&Ut.length&&n.isFinite(Ot)&&Ot>=0&&(Nt=setTimeout(Pt,Ot))}function Lt(){Nt&&(clearTimeout(Nt),Nt=null)}function Pt(){if(Nt=null,Ut.length){const[{resolve:e,stream:t,workerOptions:s}]=Ut.splice(0,1),n=r.assign({},s,{useWebWorkers:!1,workerURI:Q});e(new Et({},t,n,Ht)),Wt()}}function Ht(){Lt(),Wt()}function Bt(e){const{terminateTimeout:t}=e;t&&(clearTimeout(t),e.terminateTimeout=null)}const Zt="HTTP error ",Vt="HTTP Range not supported",qt="Content-Range",Kt="Range",jt="GET",Yt="bytes",Gt=65536,Xt="writable";class Jt{constructor(){this.size=0}init(){this.initialized=!0}}class Qt extends Jt{get readable(){const e=this,{chunkSize:t=Gt}=e,r=new k({start(){this.chunkOffset=0},async pull(s){const{offset:n=0,size:a,diskNumberStart:o}=r,{chunkOffset:c}=this,l=a===Q?t:i.min(t,a-c),d=await zr(e,n+c,l,o);s.enqueue(d),c+t>a||a===Q&&!d.length&&l?s.close():this.chunkOffset+=t}});return r}}class $t extends Jt{constructor(){super();const e=this,t=new R({write(t){if(!e.initialized)throw new f("Writer not initialized");return e.writeUint8Array(t)}});r.defineProperty(e,Xt,{get:()=>t})}writeUint8Array(){}}class er extends Qt{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 p(a)}}class tr extends Jt{constructor(e){super();const t=this,s=new F,n=[];e&&n.push(["Content-Type",e]),r.defineProperty(t,Xt,{get:()=>s.writable}),t.blob=new d(s.readable,{headers:n}).blob(),t.blob.catch(()=>{})}getData(){return this.blob}}class rr extends Qt{constructor(e,t){super(),nr(this,e,t)}async init(){await ar(this,pr,lr),super.init()}readUint8Array(e,t){return ir(this,e,t,pr,lr)}}class sr extends Qt{constructor(e,t){super(),nr(this,e,t)}async init(){await ar(this,wr,dr),super.init()}readUint8Array(e,t){return ir(this,e,t,wr,dr)}}function nr(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 ar(e,t,r){const{url:s,preventHeadRequest:a,useRangeHeader:i,forceRangeRequests:o,combineSizeEocd:c}=e;if((e=>{const{baseURI:t}=ae(),{protocol:r}=new u(e,t);return"http:"==r||"https:"==r})(s)&&(i||o)&&(void 0===a||a)){const s=await t(jt,e,or(e,c?-22:void 0)),a=s.headers.get("Accept-Ranges");if(!(o||a&&a.toLowerCase()==Yt))throw new f(Vt);{if(c){const t=new p(await s.arrayBuffer());206==s.status&&t.length==B&&(e.eocdCache=t)}let a;const i=s.headers.get(qt);if(i){const e=i.trim().split(/\s*\/\s*/);if(e.length){const t=e[1];t&&"*"!=t&&(a=n(t))}}a===Q?await fr(e,t,r):e.size=a}}else await fr(e,t,r)}async function ir(e,t,r,s,a){const{useRangeHeader:i,forceRangeRequests:o,eocdCache:c,size:l,options:d}=e;if(i||o){if(c&&t==l-B&&r==B)return c;if(l>t&&0!==r){t+r>l&&(r=l-t);const a=await s(jt,e,or(e,t,r));if(206!=a.status)throw new f(Vt);const i=a.headers.get(qt);if(i){const e=n(i.trim().split(/[\s-]+/)[1]);if(!n.isNaN(e)&&e!=t)throw new f(Vt)}const o=new p(await a.arrayBuffer());if(o.length!=r)throw new f(Vt);return o}return new p}{const{data:s}=e;return s||await a(e,d),new p(e.data.subarray(t,t+r))}}function or(e,t=0,s=1){return r.assign({},cr(e),{[Kt]:Yt+"="+(0>t?t:t+"-"+(t+s-1))})}function cr({options:e}){const{headers:t}=e;if(t)return Symbol.iterator in t?r.fromEntries(t):t}async function lr(e){await ur(e,pr)}async function dr(e){await ur(e,wr)}async function ur(e,t){const r=await t(jt,e,cr(e));e.data=new p(await r.arrayBuffer()),e.size=e.data.length}async function fr(e,t,r){if(e.preventHeadRequest)await r(e,e.options);else{const s=await t("HEAD",e,cr(e)),a=s.headers.get("Content-Length");a&&!s.headers.get("Content-Encoding")?e.size=n(a):await r(e,e.options)}}async function pr(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 f(Vt):new f(Zt+(i.statusText||i.status))}function wr(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 f(Vt):new f(Zt+(i.statusText||i.status)))},!1),i.addEventListener("error",e=>a(e.detail?e.detail.error:new f("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 hr extends Qt{constructor(e,t={}){super(),r.assign(this,{url:e,reader:t.useXHR&&!t.fetch?new sr(e,t):new rr(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 mr extends Qt{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 Sr(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 p(t);const o=await zr(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 zr(l,c,t)}else a=new p;return s.lastDiskNumber=i.max(o,s.lastDiskNumber),a}}class gr extends Jt{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 R({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 f("Writer iterator completed too soon");n=r,n.size=0,n.maxSize&&(s.maxSize=n.maxSize),s.availableSize=s.maxSize,await Sr(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,Xt,{get:()=>o})}}class yr{constructor(e){return t.isArray(e)&&(e=new mr(e)),e instanceof k&&(e={readable:e}),e}}class br{constructor(e){return e.writable===Q&&typeof e.next==te&&(e=new gr(e)),e instanceof R&&(e={writable:e}),e.size===Q&&(e.size=0),e instanceof gr||r.assign(e,{diskNumber:0,diskOffset:0,availableSize:$,maxSize:$}),e}}async function Sr(e,t){if(!e.init||e.initialized)return y.resolve();await e.init(t)}function zr(e,t,r,s){return e.readUint8Array(t,r,s)}const xr="\0☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ".split("");function Er(e,t){return t&&"cp437"==t.trim().toLowerCase()?(e=>{{let t="";for(let r=0;r<e.length;r++)t+=xr[e[r]];return t}})(e):new S(t,{ignoreBOM:!0}).decode(e)}const Fr="filename",kr="rawFilename",Rr="comment",Dr="rawComment",Ar="uncompressedSize",vr="compressedSize",Tr="offset",_r="diskNumberStart",Cr="lastModDate",Ur="rawLastModDate",Nr="lastAccessDate",Or="creationDate",Ir="rawCreationDate",Mr="internalFileAttributes",Wr="externalFileAttributes",Lr="msdosAttributesRaw",Pr="msdosAttributes",Hr="msDosCompatible",Br="zip64",Zr="encrypted",Vr="version",qr="versionMadeBy",Kr="zipCrypto",jr="directory",Yr="executable",Gr="compressionMethod",Xr="signature",Jr="extraField",Qr="unixMode",$r="setuid",es="setgid",ts="sticky",rs=[Fr,kr,Ar,vr,Cr,Ur,Rr,Dr,Nr,Or,Ir,Tr,_r,Mr,Wr,Lr,Pr,Hr,Br,Zr,Vr,qr,Kr,jr,Yr,Gr,Xr,Jr,"extraFieldUnix","extraFieldInfoZip","uid","gid",Qr,$r,es,ts,"bitFlag","filenameUTF8","commentUTF8","rawExtraField","extraFieldZip64","extraFieldUnicodePath","extraFieldUnicodeComment","extraFieldAES","extraFieldNTFS","extraFieldExtendedTimestamp"];class ss{constructor(e){rs.forEach(t=>this[t]=e[t])}}const ns="password",as="rawPassword",is="passThrough",os="signal",cs="checkAmbiguity",ls="useWebWorkers",ds="useCompressionStream",us="transferStreams",fs="preventClose",ps="offset",ws="File format is not recognized",hs="End of central directory not found",ms="End of Zip64 central directory locator not found",gs="Central directory header not found",ys="Local file header not found",bs="Zip64 extra field not found",Ss="File contains encrypted entry",zs="Encryption method not supported",xs="Compression method not supported",Es="Split zip file",Fs="Overlapping entry found",ks="Ambiguous archive",Rs="utf-8",Ds="cp437",As=[[Ar,C],[vr,C],[Tr,C],[_r,U]],vs={[U]:{getValue:Zs,bytes:4},[C]:{getValue:Vs,bytes:8}};class Ts{constructor(e,t={}){r.assign(this,{reader:new yr(e),options:t,config:ae(),readRanges:new c})}async*getEntriesGenerator(e={}){const t=this;let{reader:s}=t;const{config:n}=t;if(await Sr(s),s.size!==Q&&s.readUint8Array||(s=new er(await new d(s.readable).blob()),await Sr(s)),s.size<B)throw new f(ws);s.chunkSize=ie(n);const a=await(async(e,t,r)=>{const s=new p(4);var n;return n=t,qs(s).setUint32(0,n,!0),await a(22)||await a(i.min(1048582,r));async function a(t){const n=r-t,a=await zr(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,L,s.size);if(!a)throw Zs(qs(await zr(s,0,4)))==I?new f(Es):new f(hs);const o=qs(a);let c=Zs(o,12),u=Zs(o,16);const w=a.offset,h=Bs(o,20),m=w+B+h,g=Ws(t,e,cs);g&&m!=s.size&&Ms("appended data");let b=Bs(o,4);const S=s.lastDiskNumber||0;let z,x,E=Bs(o,6),k=Bs(o,10),R=0;if(u==C||c==C||k==U||E==U){const e=20>a.offset?new p:await zr(s,a.offset-20,20),t=qs(e);if(20==e.length&&Zs(t,0)==H){u=Vs(t,8);let e=await zr(s,u,56,-1),r=qs(e);const n=a.offset-20-56-(s.lastDiskOffset||0);if((56>e.length||Zs(r,0)!=P)&&u!=n&&n>=0){const t=u;u=n,u>t&&(R=u-t),e=await zr(s,u,56,-1),r=qs(e)}if(56>e.length||Zs(r,0)!=P)throw new f(ms);x=!0,b==U?b=Zs(r,16):g&&b!=Zs(r,16)&&Ms("mismatched zip64 end of central directory record"),E==U?E=Zs(r,20):g&&E!=Zs(r,20)&&Ms("mismatched zip64 end of central directory record"),k==U?k=Vs(r,32):g&&k!=Vs(r,32)&&Ms("mismatched zip64 end of central directory record"),c==C?c=Vs(r,40):g&&c!=Vs(r,40)&&Ms("mismatched zip64 end of central directory record"),u=Vs(r,48)+R}}const D=c,A=a.offset-(x?76:0);if(u<s.size||(R=s.size-u-c-B,u=s.size-c-B),S!=b)throw new f(Es);if(0>u)throw new f(ws);let v=0,T=await zr(s,u,c,E),_=qs(T);if(c){if(4>T.length)throw new f(ws);const e=A-c-(s.lastDiskOffset||0);if(Zs(_,v)!=W&&u!=e&&E==b){const t=u;u=e,u>t&&(R+=u-t),T=await zr(s,u,c,E),_=qs(T)}}const O=A-u-(s.lastDiskOffset||0);if(c==O||0>O||E!=b||(c=O,T=await zr(s,u,c,E),_=qs(T)),0>u||u>=s.size)throw new f(ws);z=u;const M=Ws(t,e,"filenameEncoding"),Z=Ws(t,e,"commentEncoding"),V=g?new l:Q;let G;for(let a=0;k>a;a++){const o=new _s(s,n,t.options);if(v+46>T.length||Zs(_,v)!=W)throw new f(gs);Cs(o,_,v+6);const c=!!o.bitFlag.languageEncodingFlag,l=v+46,u=l+o.filenameLength,p=u+o.extraFieldLength,w=Bs(_,v+4),h=!(w>>8),m=w>>8==3,b=T.subarray(l,u),S=Bs(_,v+32),x=p+S,E=T.subarray(p,x),D=c,A=c,C=Zs(_,v+38),O=C&N,I={readOnly:!!(1&O),hidden:!!(2&O),system:!!(4&O),directory:!!(16&O),archive:!!(32&O)},L=Zs(_,v+42),P=Ws(t,e,"decodeText")||Er,H=D?Rs:M||Ds,B=A?Rs:Z||Ds;let X=P(b,H);X===Q&&(X=Er(b,H));let J=P(E,B);J===Q&&(J=Er(E,B)),r.assign(o,{index:a,versionMadeBy:w,msDosCompatible:h,compressedSize:0,uncompressedSize:0,commentLength:S,offset:L,diskNumberStart:Bs(_,v+34),internalFileAttributes:Bs(_,v+36),externalFileAttributes:C,msdosAttributesRaw:O,msdosAttributes:I,rawFilename:b,filenameUTF8:D,commentUTF8:A,rawExtraField:T.subarray(u,p),rawComment:E,filename:X,comment:J}),Us(o,o,_,v+6),o.offset+=R,z=i.min(o.offset,z),g&&(V.has(o.filename)&&(G=!0),V.add(o.filename));const $=o.externalFileAttributes>>16&U;o.unixMode===Q&&16877&$&&(o.unixMode=$);const ee=!!(o.unixMode&K),te=!!(o.unixMode&j),re=!!(512&o.unixMode),se=o.unixMode!==Q?!!(73&o.unixMode):m&&!!(73&$),ne=o.unixMode!==Q&&(61440&o.unixMode)==q,ae=(61440&$)==q;r.assign(o,{setuid:ee,setgid:te,sticky:re,unixExternalUpper:$,internalFileAttribute:o.internalFileAttributes,externalFileAttribute:o.externalFileAttributes,executable:se,directory:ne||ae||h&&I.directory||o.filename.endsWith(Y)&&!o.uncompressedSize,zipCrypto:o.encrypted&&!o.extraFieldAES});const ie=new ss(o);ie.getData=(e,r)=>o.getData(e,ie,t.readRanges,r),ie.arrayBuffer=async e=>{const r=new F,[s]=await y.all([new d(r.readable).arrayBuffer(),o.getData(r,ie,t.readRanges,e)]);return s},v=x;const{onprogress:oe}=e;if(oe)try{await oe(a+1,k,new ss(o))}catch{}yield ie}g&&v!=D&&Ms("trailing central directory data"),G&&Ms("duplicate filename"),g&&(R||k&&z>0)&&Ms("prepended data");const X=Ws(t,e,"extractPrependedData"),J=Ws(t,e,"extractAppendedData");return X&&(t.prependedData=z>0?await zr(s,0,z):new p),t.comment=h?await zr(s,w+B,h):new p,J&&(t.appendedData=m<s.size?await zr(s,m,s.size-m):new p),!0}async getEntries(e={}){const t=[];for await(const r of this.getEntriesGenerator(e))t.push(r);return t}async close(){}}class _s{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:w,compressionMethod:h,config:m,bitFlag:g,signature:y,rawLastModDate:b,uncompressedSize:S,compressedSize:z}=a,{dataDescriptor:x}=g,E=t.localDirectory={},F=await zr(o,l,G,d),k=qs(F);let D=Ws(a,n,ns),A=Ws(a,n,as);const v=Ws(a,n,is);if(D=D&&D.length&&D,A=A&&A.length&&A,u&&99!=u.originalCompressionMethod)throw new f(xs);if(0!=h&&8!=h&&9!=h&&!v)throw new f(xs);if(F.length<G||Zs(k,0)!=O)throw new f(ys);Cs(E,k,4);const{extraFieldLength:T,filenameLength:_}=E,C=Ws(a,n,cs);let U=new p;if(C&&(_||T)){const e=await zr(o,l+G,_+T,d);U=e.subarray(0,_),E.rawExtraField=e.subarray(_)}else E.rawExtraField=T?await zr(o,l+G+_,T,d):new p;Us(a,E,k,4,!0),C&&((e,t,r)=>{const{rawFilename:s}=e;(r.length!=s.length||r.some((e,t)=>e!=s[t]))&&Ms("mismatched local file header (filename)"),(2057&t.rawBitFlag)!=(2057&e.rawBitFlag)&&Ms("mismatched local file header (general purpose bit flag)"),t.compressionMethod!=e.compressionMethod&&Ms("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||Ms("mismatched local file header (signature or sizes)")})(a,E,U);const{lastAccessDate:I,creationDate:W}=E;I&&(t.lastAccessDate=I),W&&(t.creationDate=W);const L=a.encrypted&&E.encrypted&&!v,P=L&&!u;if(v||(t.zipCrypto=P),L){if(!P&&u.strength===Q)throw new f(zs);if(!D&&!A)throw new f(Ss)}const H=l+G+_+T,B=z,Z=o.readable;r.assign(Z,{diskNumberStart:d,offset:H,size:B});const V=Ws(a,n,os),q=Ws(a,n,"checkPasswordOnly");let K=Ws(a,n,"checkOverlappingEntry");const j=Ws(a,n,"checkOverlappingEntryOnly");j&&(K=!0);const{onstart:Y,onprogress:X,onend:J}=n,$=9==h;let ee=Ws(a,n,ds);$&&(ee=!1);const te={options:{codecType:pt,password:D,rawPassword:A,zipCrypto:P,encryptionStrength:u&&u.strength,signed:Ws(a,n,"checkSignature")&&!v,passwordVerification:P&&(x?b>>>8&N:y>>>24&N),outputSize:v?z:S,signature:y,compressed:0!=h&&!v,encrypted:L,useWebWorkers:Ws(a,n,ls),useCompressionStream:ee,transferStreams:Ws(a,n,us),deflate64:$,checkPasswordOnly:q},config:m,streamOptions:{signal:V,size:B,onstart:Y,onprogress:X,onend:J}};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:p})=>{let w=0;if(n&&e.readers)for(let t=0;t<i.min(n,e.readers.length);t++)w+=e.readers[t].size;let h=0;if(d&&(h=u?20:12),h){const r=await zr(e,l+o,h+4,n);if(r.length==h+4&&Zs(qs(r),0)==M){const e=Zs(qs(r),4);let s,n;u?(s=Vs(qs(r),8),n=Vs(qs(r),16)):(s=Zs(qs(r),8),n=Zs(qs(r),12)),(t.encrypted&&!t.zipCrypto||e==a)&&s==o&&n==c&&(h+=4)}}const m={start:w+s,end:w+l+o+h,fileEntry:t};for(const[e,t]of p)if(e!=r&&m.start<t.end&&t.start<m.end){const e=new f(Fs);throw e.overlappingEntry=t.fileEntry,e}p.set(r,m)})({reader:o,fileEntry:t,index:c,offset:l,diskNumberStart:d,signature:y,compressedSize:z,uncompressedSize:S,dataOffset:H,dataDescriptor:x||E.bitFlag.dataDescriptor,extraFieldZip64:w||E.extraFieldZip64,readRanges:s});try{if(!j){q&&(e=new R),e=new br(e),await Sr(e,v?z:S),({writable:re}=e);const{outputSize:t}=await Mt({readable:Z,writable:re},te);if(e.size+=t,t!=(v?z:S))throw new f(nt)}}catch(t){if(t.outputSize!==Q&&(e.size+=t.outputSize),!q||t.message!=Se)throw t}finally{Ws(a,n,fs)||!re||re.locked||await re.getWriter().close()}return q||j?Q:e.getData?e.getData():re}}function Cs(e,t,s){const n=e.rawBitFlag=Bs(t,s+2),a=!(1&~n),i=Zs(t,s+6);r.assign(e,{encrypted:a,version:Bs(t,s),bitFlag:{level:(6&n)>>1,dataDescriptor:!(8&~n),languageEncodingFlag:(n&V)==V},rawLastModDate:i,lastModDate:Ls(i),filenameLength:Bs(t,s+22),extraFieldLength:Bs(t,s+24)})}function Us(e,t,s,n,a){const{rawExtraField:i}=t,l=t.extraField=new c,d=qs(new p(i));let u=0;try{for(;u<i.length;){const e=Bs(d,u),t=Bs(d,u+2);l.set(e,{type:e,data:i.slice(u+4,u+4+t)}),u+=4+t}}catch{}const w=Bs(s,n+4);r.assign(t,{signature:Zs(s,n+10),compressedSize:Zs(s,n+14),uncompressedSize:Zs(s,n+18)});const h=l.get(1);h&&(((e,t)=>{t.zip64=!0;const r=qs(e.data),s=As.filter(([e,r])=>t[e]==r),n=s.reduce((e,[,t])=>e+vs[t].bytes,0);if(e.data.length<n)throw new f(bs);for(let n=0,a=0;n<s.length;n++){const[i,o]=s[n],c=vs[o];t[i]=e[i]=c.getValue(r,a),a+=c.bytes}})(h,t),t.extraFieldZip64=h);const m=l.get(28789);m&&(Ns(m,Fr,kr,t,e),t.extraFieldUnicodePath=m);const g=l.get(25461);g&&(Ns(g,Rr,Dr,t,e),t.extraFieldUnicodeComment=g);const y=l.get(39169);y&&y.data.length>=7?(((e,t,s)=>{const n=qs(e.data),a=Hs(n,4);r.assign(e,{vendorVersion:Hs(n,0),vendorId:Hs(n,2),strength:a,originalCompressionMethod:s,compressionMethod:Bs(n,5)}),t.compressionMethod=e.compressionMethod})(y,t,w),t.extraFieldAES=y):t.compressionMethod=w;const b=l.get(10);b&&(((e,t)=>{const s=qs(e.data);let n,a=4;try{for(;a<e.data.length&&!n;){const t=Bs(s,a),r=Bs(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=qs(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:Ps(a),lastAccessDate:Ps(i),creationDate:Ps(o)};r.assign(e,c),r.assign(t,c)}}catch{}})(b,t),t.extraFieldNTFS=b);const S=l.get(30805);if(S)Os(S,t,!1),t.extraFieldUnix=S;else{const e=l.get(30837);e&&(Os(e,t,!0),t.extraFieldInfoZip=e)}const z=l.get(Z);z&&(((e,t,r)=>{if(!e.data.length)return;const s=qs(e.data),n=Hs(s,0),a=[],i=[];r?(1&~n||(a.push(Cr),i.push(Ur)),2&~n||(a.push(Nr),i.push("rawLastAccessDate")),4&~n||(a.push(Or),i.push(Ir))):5>e.data.length||(a.push(Cr),i.push(Ur));let c=1;a.forEach((r,n)=>{if(e.data.length>=c+4){const a=Zs(s,c);t[r]=e[r]=new o(1e3*(0|a));const l=i[n];e[l]=a}c+=4})})(z,t,a),t.extraFieldExtendedTimestamp=z);const x=l.get(6534);x&&(t.extraFieldUSDZ=x)}function Ns(e,t,s,n,a){if(5>e.data.length)return void(e.valid=!1);const i=qs(e.data),o=new de;o.append(a[s]);const c=qs(new p(4));c.setUint32(0,o.get(),!0);const l=Zs(i,1);r.assign(e,{version:Hs(i,0),[t]:Er(e.data.subarray(5)),valid:!a.bitFlag.languageEncodingFlag&&l==Zs(c,0)}),e.valid&&(n[t]=e[t],n[t+"UTF8"]=!0)}function Os(e,t,s){try{const n=qs(new p(e.data));let a,i;if(s){let t=0;const s=Hs(n,t++),o=Hs(n,t++);a=Is(e.data.subarray(t,t+o)),t+=o;const c=Hs(n,t++);i=Is(e.data.subarray(t,t+c)),r.assign(e,{version:s,uid:a,gid:i})}else 4>e.data.length||(a=Bs(n,0),i=Bs(n,2),r.assign(e,{uid:a,gid:i}));a!==Q&&(t.uid=a),i!==Q&&(t.gid=i)}catch{}}function Is(e){const t=new p(4);return t.set(e,0),new m(t.buffer,t.byteOffset,4).getUint32(0,!0)}function Ms(e){const t=new f(ks);throw t.reason=e,t}function Ws(e,t,r){return t[r]===Q?e.options[r]:t[r]}function Ls(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 Ps(e){return new o(n(e/a(1e4)-a(116444736e5)))}function Hs(e,t){return e.getUint8(t)}function Bs(e,t){return e.getUint16(t,!0)}function Zs(e,t){return e.getUint32(t,!0)}function Vs(e,t){return n(e.getBigUint64(t,!0))}function qs(e){return new m(e.buffer,e.byteOffset,e.byteLength)}const Ks="File already exists",js="Zip file comment exceeds 64KB",Ys="File entry comment exceeds 64KB",Gs="File entry name exceeds 64KB",Xs="Version exceeds 65535",Js="The strength must equal 1, 2, or 3",Qs="Extra field type exceeds 65535",$s="Extra field data exceeds 64KB",en=-2147483648,tn=2147483647,rn="Zip64 is not supported (set the 'zip64' option to 'true')",sn="Undefined uncompressed size",nn="Undefined reader",an="Zip file not empty",on=new p([7,0,2,0,65,69,3,0,0]),cn="infozip",ln="unix";let dn=0;const un=[];class fn{constructor(e,t={}){const s=(e=new br(e)).availableSize!==Q&&e.availableSize>0&&e.availableSize!==$&&e.maxSize!==Q&&e.maxSize>0&&e.maxSize!==$;r.assign(this,{writer:e,addSplitZipSignature:s,options:t,config:ae(),files:new c,filenames:new l,offset:t[ps]===Q?e.size||e.writable.size||0:t[ps],initialOffset:t[ps]===Q?0:t[ps]-(e.size||e.writable.size||0),pendingAddFileCalls:new l,bufferedWrites:0,lastFileEntry:Q})}async prependZip(e){if(this.filenames.size)throw new f(an);e=new yr(e),await Sr(e);const t=new Ts(e.readable),s=await t.getEntries();await t.close(),await Sr(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:f,zip64:w}=e;let{compressionMethod:h,rawExtraFieldZip64:m,rawExtraFieldAES:g,rawExtraFieldExtendedTimestamp:y,rawExtraFieldNTFS:b,rawExtraFieldUnix:S,rawExtraField:z}=e;const{level:x,languageEncodingFlag:E,dataDescriptor:F}=o;m=m||new p,g=g||new p,y=y||new p,b=b||new p,S=S||new p,z=z||new p,e.extraFieldAES&&(h=99);const k=Tn(m,g,y,b,S,z),R=w&&l>=C,D=w&&d>=C,A=-7&Cn(x,E,F,c,h)|x<<1,{headerArray:v,headerView:T}=_n({version:t,bitFlag:A,compressionMethod:h,uncompressedSize:l,compressedSize:d,rawLastModDate:s,rawFilename:i,zip64CompressedSize:D,zip64UncompressedSize:R,extraFieldLength:k}),{signature:_}=e;return _!==Q&&Rn(T,10,_),r.assign(e,{zip64UncompressedSize:R,zip64CompressedSize:D,zip64Offset:w&&this.offset-u>=C,zip64DiskNumberStart:w&&f>=U,rawExtraFieldZip64:m,rawExtraFieldAES:g,rawExtraFieldExtendedTimestamp:y,rawExtraFieldNTFS:b,rawExtraFieldUnix:S,rawExtraField:z,extendedTimestamp:y.length>0||b.length>0,extraFieldExtendedTimestampFlag:1+(n?2:0)+(a?4:0),headerArray:v,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;dn<c.maxWorkers?dn++:await new y(e=>un.push(e));try{if(e=e.trim(),En(n,s,jr)&&!e.endsWith(Y)&&(e+=Y),n.filenames.has(e))throw new f(Ks);return n.filenames.add(e),d=!0,l=(async(e,t,s,n)=>{const i=((e,t,r)=>{t=t.trim();let s=En(e,r,Hr),n=En(e,r,qr,s?20:768);const a=En(e,r,Yr),i=En(e,r,"uid"),o=En(e,r,"gid");let c=En(e,r,Qr),l=En(e,r,"unixExtraFieldType"),d=En(e,r,$r),u=En(e,r,es),p=En(e,r,ts);if(i!==Q&&(0>i||i>C))throw new f("Invalid uid (must be integer 0..2^32-1)");if(o!==Q&&(0>o||o>C))throw new f("Invalid gid (must be integer 0..2^32-1)");if(c!==Q&&(0>c||c>U))throw new f("Invalid UNIX mode (must be integer 0..65535)");if(l!==Q&&l!==cn&&l!==ln)throw new f("Invalid unixExtraFieldType (must be 'infozip' or 'unix')");if(l===ln&&(i!==Q&&i>U||o!==Q&&o>U))throw new f("uid/gid must be 0..65535 for unixExtraFieldType 'unix' (use 'infozip' for larger ids)");l!==Q||i===Q&&o===Q||(l=cn);let w=En(e,r,Lr),h=En(e,r,Pr);const m=w!==Q||h!==Q;if(i!==Q||o!==Q||c!==Q||l?(s=!1,n=n&U|768):m&&(s=!0,n&=N),w!==Q&&(0>w||w>N))throw new f("Invalid msdosAttributesRaw (must be integer 0..255)");if(h&&"object"!=typeof h)throw new f("Invalid msdosAttributes (must be an object with boolean flags)");if(n>U)throw new f(Xs);let g=En(e,r,Wr,0);!r[jr]&&t.endsWith(Y)&&(r[jr]=!0);const y=En(e,r,jr);let b;return y?(t.endsWith(Y)||(t+=Y),0===g&&(g=16,s||(g|=16877<<16))):s||0!==g||(g=a?493<<16:27525120),s||(b=g>>16&U,c=c===Q?b:c&U,d?c|=K:d=!!(c&K),u?c|=j:u=!!(c&j),p?c|=512:p=!!(512&c),y&&(c|=q),g=(c&U)<<16|g&N),({msdosAttributesRaw:w,msdosAttributes:h}=((e,t)=>{if(e!==Q)e&=N;else if(t!==Q){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&N}return t===Q&&(t={readOnly:!!(1&e),hidden:!!(2&e),system:!!(4&e),directory:!!(16&e),archive:!!(32&e)}),{msdosAttributesRaw:e,msdosAttributes:t}})(w,h)),m&&(g=g&C|w&N),{name:t,resolvedOptions:{versionMadeBy:n,msDosCompatible:s,externalFileAttributes:g,unixExternalUpper:b,uid:i,gid:o,unixMode:c,unixExtraFieldType:l,setuid:d,setgid:u,sticky:p,msdosAttributesRaw:w,msdosAttributes:h}}})(e,t,n);({name:t}=i);const c=((e,t,r)=>{const s=En(e,r,"encodeText",fe);let n=s(t);if(n===Q&&(n=fe(t)),Tn(n)>U)throw new f(Gs);const a=r[Rr]||"";let i=s(a);if(i===Q&&(i=fe(a)),Tn(i)>U)throw new f(Ys);const c=En(e,r,Vr,20);if(c>U)throw new f(Xs);const l=En(e,r,Cr,new o),d=En(e,r,Nr),u=En(e,r,Or),w=En(e,r,Mr,0),h=En(e,r,is);let m,g;h||(m=En(e,r,ns),g=En(e,r,as));const y=En(e,r,"encryptionStrength",3),b=En(e,r,Kr),S=En(e,r,"extendedTimestamp",!0),z=En(e,r,"keepOrder",!0),x=En(e,r,ls),E=En(e,r,us,!0),F=En(e,r,"bufferedWrite"),k=En(e,r,"createTempStream"),R=En(e,r,"dataDescriptorSignature",!0),D=En(e,r,os),A=En(e,r,"useUnicodeFileNames",!0),v=En(e,r,Gr);if(!h&&v!==Q&&0!==v&&8!==v)throw new f("Compression method not supported");let T=En(e,r,"level"),_=En(e,r,ds),C=En(e,r,"dataDescriptor");F&&C===Q&&(C=!1),(C===Q||b)&&(C=!0),T!==Q&&6!=T&&(_=!1),_||e.config.CompressionStream!==Q||e.config.CompressionStreamZlib!==Q||(T=0);const N=En(e,r,Br);if(!b&&(m!==Q||g!==Q)&&(1>y||y>3))throw new f(Js);let O=new p;const I=r[Jr];if(I){let e=0,t=0;I.forEach(t=>e+=4+Tn(t)),O=new p(e);const r=vn(O);I.forEach((e,s)=>{if(s>U)throw new f(Qs);if(Tn(e)>U)throw new f($s);kn(r,t,s),kn(r,t+2,Tn(e)),An(O,e,t+4),t+=4+Tn(e)})}return{comment:a,resolvedOptions:{rawFilename:n,rawComment:i,version:c,lastModDate:l,lastAccessDate:d,creationDate:u,internalFileAttributes:w,passThrough:h,password:m,rawPassword:g,encryptionStrength:y,zipCrypto:b,extendedTimestamp:S,keepOrder:z,useWebWorkers:x,transferStreams:E,bufferedWrite:F,createTempStream:k,dataDescriptorSignature:R,signal:D,useUnicodeFileNames:A,compressionMethod:v,level:T,useCompressionStream:_,dataDescriptor:C,zip64:N,rawExtraField:O}}})(e,t,n),{comment:l}=c,d=n[Jr];let u;e.files.set(t,Q);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:p}=r,w=0,h=0;if(n){if(!t)throw new f(nn);if(h=s[Ar],h===Q)throw new f(sn)}const m=!0===d,g=En(e,s,Zr),y=!!t&&(!!(i&&Tn(i)||o&&Tn(o))||n&&g);t||(u=0,p=0);const b=y?a?12:16+4*c:0;t&&(t=new yr(t),await Sr(t),n?(s.uncompressedSize=h,w=Fn(h)+b):t.size===Q?(l=!0,(d||d===Q)&&(d=!0,h=w=4294967296)):(s.uncompressedSize=h=t.size,w=Fn(h)+b));const S=m||h>=C,z=m||w>=C;if(S||z){if(!1===d)throw new f(rn);d=!0}return d=d||!1,{reader:t,resolvedOptions:{dataDescriptor:l,zip64:d,zip64UncompressedSize:S,zip64CompressedSize:z,uncompressedSize:h,level:u,compressionMethod:p,encrypted:y}}})(e,s,c,n);({reader:s}=o);const{diskOffset:l,diskNumber:d}=e.writer,w=(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:w,extendedTimestamp:h,passThrough:m,encrypted:g,zip64UncompressedSize:y,zip64CompressedSize:b,uncompressedSize:S}=e;let{version:z,compressionMethod:x}=e;const E=!d&&(x===Q?a===Q||a>0:0!==x);let F;const k=m||!E,R=i&&(e.bufferedWrite||!l||!y&&!b||k),D=R||i&&l&&(y||b);if(i&&(y||b)){const e=20,t=mn(e);if(t.uint16(1),t.uint16(e-4),F=t.array,R&&(t.uint64(S),k)){const e=g?o?12:16+4*w:0;t.uint64(m?0:S+e)}}else F=new p;let A,v,T,_,C;if(g&&!o){const e=mn(Tn(on)+2);e.uint16(39169),e.bytes(on),A=e.array,A[8]=w}else A=new p;if(h){const e=Sn(r);if(zn(e)){const t=9+(s?4:0)+(n?4:0),r=mn(t);_=1+(s?2:0)+(n?4:0),r.uint16(Z),r.uint16(t-4),r.uint8(_),r.uint32(e),s&&r.uint32(xn(Sn(s))),n&&r.uint32(xn(Sn(n))),T=r.array}else T=new p;try{const e=bn(r),t=mn(36);t.uint16(10),t.uint16(32),t.skip(4),t.uint16(1),t.uint16(24),t.uint64(e),t.uint64(bn(s)||e),t.uint64(bn(n)||e),v=t.array}catch{v=new p}}else v=T=new p;try{const{uid:t,gid:r,unixExtraFieldType:s}=e;if(s!=cn||t===Q&&r===Q)if(s!=ln||t===Q&&r===Q)C=new p;else{const e=mn(8);e.uint16(30805),e.uint16(4),e.uint16((t===Q?0:t)&U),e.uint16((r===Q?0:r)&U),C=e.array}else{const e=hn(t),s=hn(r),n=3+e.length+s.length,a=mn(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),C=a.array}}catch{C=new p}x===Q&&(x=E?8:0),i&&(z=z>45?z:45),g&&!o&&(z=z>51?z:51,A[9]=x,x=99);const N=D?Tn(F):0,I=N+Tn(A,T,v,C,u);if(I>U)throw new f($s);const{headerArray:M,headerView:W,rawLastModDate:L}=_n({version:z,bitFlag:Cn(a,c,l,g,x),compressionMethod:x,uncompressedSize:S,lastModDate:J>r?J:r>X?X:r,rawFilename:t,zip64CompressedSize:b,zip64UncompressedSize:y,extraFieldLength:I}),P=mn(G+Tn(t)+I),H=P.array,B=vn(H);return P.uint32(O),P.bytes(M),P.bytes(t),D&&P.bytes(F),P.bytes(A),P.bytes(T),P.bytes(v),P.bytes(C),P.bytes(u),l&&(b||Rn(B,18,0),y||Rn(B,22,0)),{localHeaderArray:H,localHeaderView:B,headerArray:M,headerView:W,lastModDate:r,rawLastModDate:L,encrypted:g,compressed:E,version:z,compressionMethod:x,extraFieldExtendedTimestampFlag:_,rawExtraFieldZip64:new p,localExtraFieldZip64Length:N,rawExtraFieldExtendedTimestamp:T,rawExtraFieldNTFS:v,rawExtraFieldUnix:C,rawExtraFieldAES:A,extraFieldLength:I}})(n=r.assign({},n,i.resolvedOptions,c.resolvedOptions,o.resolvedOptions,{internalFileAttribute:c.resolvedOptions.internalFileAttributes,externalFileAttribute:i.resolvedOptions.externalFileAttributes,signature:n[Xr],offset:e.offset-l,diskNumberStart:d})),h=(({zip64:e,dataDescriptor:t,dataDescriptorSignature:r})=>{let s,n=new p,a=0,i=e?20:12;return r&&(i+=4),t&&(n=new p(i),s=vn(n),r&&(a=4,Rn(s,0,M))),{dataDescriptorArray:n,dataDescriptorView:s,dataDescriptorOffset:a}})(n),m=Tn(w.localHeaderArray,h.dataDescriptorArray);u=await(async(e,t,s,n,i)=>{const{files:o,writer:c}=e,{keepOrder:l,dataDescriptor:d,signal:u}=i,{headerInfo:w}=n,h=e.options.usdz,m=e.lastFileEntry;let g,b,S,z,x,E,k,D={},A=0;o.set(t,D),e.lastFileEntry=D;try{let b;l&&(b=m&&m.lock,D.lock=new y(e=>S=e)),i.bufferedWrite||!l||e.writerLocked||e.bufferedWrites||!d?(g=!0,e.bufferedWrites++,k=i.createTempStream?await i.createTempStream():new F(Q,Q,{highWaterMark:$}),k.size=0,await Sr(c)):(k=c,await v()),await Sr(k);const{diskOffset:_}=c;if(e.addSplitZipSignature){delete e.addSplitZipSignature;const t=new p(4);Rn(vn(t),0,I),await yn(c,t),e.offset+=4}h&&!g&&wn(n,e.offset-_);const{localHeaderArray:U}=w;g||(await b,await T());const O=c.diskNumber,M=gn(e,c);if(D.diskNumberStart=O,g||(x=!0,E=c.size,await yn(k,U)),D=await(async(e,t,{diskNumberStart:s,lock:n},i,o,c)=>{const{headerInfo:l,dataDescriptorInfo:d,metadataSize:u}=i,{headerArray:p,headerView:w,lastModDate:h,rawLastModDate:m,encrypted:g,compressed:y,version:b,compressionMethod:S,rawExtraFieldZip64:z,localExtraFieldZip64Length:x,rawExtraFieldExtendedTimestamp:E,extraFieldExtendedTimestampFlag:F,rawExtraFieldNTFS:k,rawExtraFieldUnix:R,rawExtraFieldAES:D}=l,{dataDescriptorArray:A}=d,{rawFilename:v,lastAccessDate:T,creationDate:_,password:U,rawPassword:O,level:I,zip64:M,zip64UncompressedSize:W,zip64CompressedSize:L,zipCrypto:P,dataDescriptor:H,directory:B,executable:Z,versionMadeBy:V,rawComment:q,rawExtraField:K,useWebWorkers:j,transferStreams:Y,onstart:G,onprogress:X,onend:J,signal:$,encryptionStrength:ee,extendedTimestamp:te,msDosCompatible:re,internalFileAttributes:se,externalFileAttributes:ne,uid:ae,gid:oe,unixMode:ce,setuid:le,setgid:de,sticky:ue,unixExternalUpper:fe,msdosAttributesRaw:pe,msdosAttributes:we,useCompressionStream:he,passThrough:me}=c,ge={lock:n,versionMadeBy:V,zip64:M,directory:!!B,executable:!!Z,filenameUTF8:!0,rawFilename:v,commentUTF8:!0,rawComment:q,rawExtraFieldZip64:z,localExtraFieldZip64Length:x,rawExtraFieldExtendedTimestamp:E,rawExtraFieldNTFS:k,rawExtraFieldUnix:R,rawExtraFieldAES:D,rawExtraField:K,extendedTimestamp:te,msDosCompatible:re,internalFileAttributes:se,externalFileAttributes:ne,diskNumberStart:s,uid:ae,gid:oe,unixMode:ce,setuid:le,setgid:de,sticky:ue,unixExternalUpper:fe,msdosAttributesRaw:pe,msdosAttributes:we};let{signature:ye,uncompressedSize:be}=c,Se=0;me||(be=0);const{writable:ze}=t;if(e){e.chunkSize=ie(o);const r=e.readable,s=e.size,n={options:{codecType:ft,level:I,rawPassword:O,password:U,encryptionStrength:ee,zipCrypto:g&&P,passwordVerification:g&&P&&m>>8&N,signed:!me,compressed:y&&!me,encrypted:g&&!me,useWebWorkers:j,useCompressionStream:he,transferStreams:Y},config:o,streamOptions:{signal:$,size:s,onstart:G,onprogress:X,onend:J}};try{const e=await Mt({readable:r,writable:ze},n);if(Se=e.outputSize,t.size+=Se,me||(be=e.inputSize,ye=e.signature),!L&&Se>=C||!W&&be>=C)throw new f(rn)}catch(e){throw e.outputSize!==Q&&(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:f}=n;d&&!o||e===Q||(Rn(l,10,e),c&&Rn(u,f,e)),i?c&&(Dn(u,f+4,a(t)),Dn(u,f+12,a(r))):(Rn(l,14,t),Rn(l,18,r),c&&(Rn(u,f+4,t),Rn(u,f+8,r)))})({signature:ye,compressedSize:Se,uncompressedSize:be,headerInfo:l,dataDescriptorInfo:d},c),H&&await yn(t,A),r.assign(ge,{uncompressedSize:be,compressedSize:Se,lastModDate:h,rawLastModDate:m,creationDate:_,lastAccessDate:T,encrypted:g,zipCrypto:P,size:u+Se,compressionMethod:S,version:b,headerArray:p,headerView:w,signature:ye,extraFieldExtendedTimestampFlag:F,zip64UncompressedSize:W,zip64CompressedSize:L}),ge})(s,k,D,n,e.config,i),g||(x=!1),o.set(t,D),D.filename=t,g){if(await y.all([k.writable.getWriter().close(),b]),await v(),z=!0,E=c.size,await T(),D.diskNumberStart=c.diskNumber,D.offset=gn(e,c),h){const t=n.metadataSize;wn(n,e.offset-c.diskOffset),D.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||Rn(d,14,n),l||Rn(d,18,i),c||Rn(d,22,o)),r&&s){const t=G+Tn(e)+4;Dn(d,t,a(o)),Dn(d,t+8,a(i))}})(D,w.localHeaderView,i),await yn(c,w.localHeaderArray),await(async(e,t,r)=>{const s=t.writable.getWriter();try{await e.pipeTo(new R({async write(e){var t;await s.ready,await s.write(e),t=Tn(e),A+=t}}),{preventClose:!0,preventAbort:!0,signal:r})}finally{s.releaseLock()}})(k.readable,c,u),c.size+=k.size,z=!1}else D.diskNumberStart=O,D.offset=M;return e.offset+=D.size,D}catch(r){if(z||x){if(e.hasCorruptedEntries=!0,r)try{r.corruptedEntry=!0}catch{}e.offset+=c.size-E,g&&(e.offset+=A)}throw o.delete(t),r}finally{g&&e.bufferedWrites--,S&&S(),b&&b()}async function v(){e.writerLocked=!0;const{lockWriter:t}=e;e.lockWriter=new y(t=>b=()=>{e.writerLocked=!1,t()}),await t}async function T(){Tn(w.localHeaderArray)>c.availableSize&&(c.availableSize=0,await yn(c,new p))}})(e,t,s,{headerInfo:w,dataDescriptorInfo:h,metadataSize:m},n)}catch(r){throw e.files.delete(t),r}return r.assign(u,{name:t,comment:l,extraField:d}),new ss(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=un.shift();e?e():dn--}}remove(e){const{filenames:t,files:r}=this;if("string"==typeof e&&(e=r.get(e)),e&&e.filename!==Q){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 p,r={}){const{pendingAddFileCalls:s,writer:n}=this,{writable:i}=n;if(Tn(e)>U)throw new f(js);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:w,uncompressedSize:h,compressedSize:m}=r,g=r.offset>=C,y=r.diskNumberStart>=U;let b,S;if(g||y||u||w){const e=4+(u?8:0)+(w?8:0)+(g?8:0)+(y?4:0),t=mn(e);t.uint16(1),t.uint16(e-4),u&&t.uint64(h),w&&t.uint64(m),g&&t.uint64(r.offset),y&&t.uint32(r.diskNumberStart),b=t.array}else b=new p;r.rawExtraFieldZip64=b,r.zip64Offset=g,r.zip64DiskNumberStart=y;const z=Sn(d);if(c&&zn(z)){const e=mn(9);e.uint16(Z),e.uint16(5),e.uint8(l),e.uint32(z),S=e.array}else S=new p;r.rawExtraFieldExtendedTimestamp=S;const x=Tn(b,s,a,i,S,o);if(x>U)throw new f($s);t+=46+Tn(e,n)+x}return t})(e.files),{cdStartDiskNumber:i,cdStartDiskOffset:o}=await(async(e,r,s)=>{const{files:n,writer:a}=e,i=new p(r);await Sr(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:f,rawExtraFieldAES:w,rawExtraFieldExtendedTimestamp:h,rawExtraFieldNTFS:m,rawExtraFieldUnix:g,rawExtraField:y,rawComment:b,versionMadeBy:S,headerArray:z,headerView:x,zip64UncompressedSize:E,zip64CompressedSize:F,zip64DiskNumberStart:k,zip64Offset:R,internalFileAttributes:D,externalFileAttributes:A,diskNumberStart:v,uncompressedSize:T,compressedSize:_}=r,N=Tn(f,w,h,m,g,y),O=46+Tn(u,b)+N;o+O-c>a.availableSize&&(await yn(a,i.slice(c,o)),c=o,a.availableSize=0,await yn(a,new p)),0==e&&(l=a.diskNumber,d=a.diskOffset),E||Rn(x,18,T),F||Rn(x,14,_),(R||k)&&45>r.version&&kn(x,0,45);const I=mn(O);if(I.uint32(W),I.uint16(S),I.bytes(z.subarray(0,24)),I.uint16(N),I.uint16(Tn(b)),I.uint16(k?U:v),I.uint16(D),I.uint32(A),I.uint32(R?C:t),I.bytes(u),I.bytes(f),I.bytes(w),I.bytes(h),I.bytes(m),I.bytes(g),I.bytes(y),I.bytes(b),An(i,I.array,o),o+=O,s.onprogress)try{await s.onprogress(e+1,n.size,new ss(r))}catch{}}return await yn(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),w=n.diskNumber;n.availableSize<B&&w++;let h=En(e,r,Br);if(!(C>u&&C>c&&U>l&&U>w)){if(!1===h)throw new f(rn);h=!0}const m=Tn(t);if(m>U)throw new f(js);const g=mn(h?98:B);Tn(g.array)+m>n.availableSize&&(n.availableSize=0,await yn(n,new p)),w=n.diskNumber,h&&(g.uint32(P),g.uint64(44),g.uint16(45),g.uint16(45),g.uint32(w),g.uint32(d),g.uint64(l),g.uint64(l),g.uint64(c),g.uint64(u),g.uint32(H),g.uint32(w),g.uint64(a(e.offset)+a(c)-a(n.diskOffset)-a(n.diskNumber?e.initialOffset:0)),g.uint32(w+1),En(e,r,"supportZip64SplitFile",!0)&&(w=U,d=U),l=U,u=C,c=C),g.uint32(L),g.uint16(w),g.uint16(d),g.uint16(l),g.uint16(l),g.uint32(c),g.uint32(u),g.uint16(m),await yn(n,g.array),m&&await yn(n,t)})(e,r,s,{cdStartDiskNumber:i,cdStartDiskOffset:o,directoryDataLength:n})})(this,e,r),En(this,r,fs)||await i.getWriter().close(),n.getData?n.getData():i}}function pn(e,t,r){e.pendingAddFileCalls.add(t),t.catch(e=>{try{r(e)}catch{}})}function wn(e,t){const{headerInfo:r}=e;let s,{localHeaderArray:n,extraFieldLength:a}=r,i=64-(t+Tn(n))%64;4>i&&(i+=64);const o=new p(i),c=vn(o);kn(c,0,6534),kn(c,2,i-4);const l=n;r.localHeaderArray=n=new p(Tn(l)+i),An(n,l),An(n,o,Tn(l)),s=vn(n),kn(s,28,a+i),r.localHeaderView=s,e.metadataSize+=i}function hn(e){if(e===Q)return new p;{const t=new p(4);vn(t).setUint32(0,e,!0);let r=4;for(;r>1&&0===t[r-1];)r--;return t.subarray(0,r)}}function mn(e){const t=new p(e),r=vn(t);let s=0;return{array:t,uint8:e=>{((e,t,r)=>{e.setUint8(t,r)})(r,s,e),s+=1},uint16:e=>{kn(r,s,e),s+=2},uint32:e=>{Rn(r,s,e),s+=4},uint64:e=>{Dn(r,s,a(e)),s+=8},bytes:e=>{An(t,e,s),s+=Tn(e)},skip:e=>s+=e}}function gn(e,t){return e.offset-t.diskOffset-(t.diskNumber?e.initialOffset:0)}async function yn(e,t){const{writable:r}=e,s=r.getWriter();try{await s.ready,e.size+=Tn(t),await s.write(t)}finally{s.releaseLock()}}function bn(e){if(e)return(a(e.getTime())+a(116444736e5))*a(1e4)}function Sn(e){return i.floor(e.getTime()/1e3)}function zn(e){return e>=en&&tn>=e}function xn(e){return i.min(tn,i.max(en,e))}function En(e,t,r,s){const n=t[r]===Q?e.options[r]:t[r];return n===Q?s:n}function Fn(e){return e+5*(i.floor(e/16383)+1)}function kn(e,t,r){e.setUint16(t,r,!0)}function Rn(e,t,r){e.setUint32(t,r,!0)}function Dn(e,t,r){e.setBigUint64(t,r,!0)}function An(e,t,r){e.set(t,r)}function vn(e){return new m(e.buffer,e.byteOffset,e.byteLength)}function Tn(...e){let t=0;return e.forEach(e=>e&&(t+=e.length)),t}function _n({version:e,bitFlag:t,compressionMethod:r,uncompressedSize:s,compressedSize:n,lastModDate:a,rawLastModDate:i,rawFilename:o,zip64CompressedSize:c,zip64UncompressedSize:l,extraFieldLength:d}){const u=mn(26),f=u.array,p=vn(f);if(u.uint16(e),u.uint16(t),u.uint16(r),i===Q){const e=new h(1),t=vn(e);kn(t,0,(a.getHours()<<6|a.getMinutes())<<5|a.getSeconds()/2),kn(t,2,(a.getFullYear()-1980<<4|a.getMonth()+1)<<5|a.getDate()),i=e[0]}return u.uint32(i),u.skip(4),c||n!==Q?u.uint32(c?C:n):u.skip(4),l||s!==Q?u.uint32(l?C:s):u.skip(4),u.uint16(Tn(o)),u.uint16(d),{headerArray:f,headerView:p,rawLastModDate:i}}function Cn(e,t,r,s,n){let a=0;return t&&(a|=V),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}try{oe({baseURI:void 0===z&&"undefined"==typeof location?require("url").pathToFileURL(__filename).href:void 0===z?location.href:_&&"SCRIPT"===_.tagName.toUpperCase()&&_.src||new u("zip-core.min.js",z.baseURI).href})}catch{}e.BlobReader=er,e.BlobWriter=tr,e.Data64URIReader=class extends Qt{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 p(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}},e.Data64URIWriter=class extends $t{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+=E(n):t.pending=n+t.pending}getData(){return this.data+E(this.pending)}},e.ERR_AMBIGUOUS_ARCHIVE=ks,e.ERR_BAD_FORMAT=ws,e.ERR_CENTRAL_DIRECTORY_NOT_FOUND=gs,e.ERR_DUPLICATED_NAME=Ks,e.ERR_ENCRYPTED=Ss,e.ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND=ms,e.ERR_EOCDR_NOT_FOUND=hs,e.ERR_EXTRAFIELD_ZIP64_NOT_FOUND=bs,e.ERR_HTTP_RANGE=Vt,e.ERR_INVALID_COMMENT=js,e.ERR_INVALID_COMPRESSED_DATA=at,e.ERR_INVALID_ENCRYPTION_STRENGTH=Js,e.ERR_INVALID_ENTRY_COMMENT=Ys,e.ERR_INVALID_ENTRY_NAME=Gs,e.ERR_INVALID_EXTRAFIELD_DATA=$s,e.ERR_INVALID_EXTRAFIELD_TYPE=Qs,e.ERR_INVALID_PASSWORD=ye,e.ERR_INVALID_SIGNATURE=be,e.ERR_INVALID_UNCOMPRESSED_SIZE=nt,e.ERR_INVALID_VERSION=Xs,e.ERR_LOCAL_FILE_HEADER_NOT_FOUND=ys,e.ERR_OVERLAPPING_ENTRY=Fs,e.ERR_SPLIT_ZIP_FILE=Es,e.ERR_UNDEFINED_READER=nn,e.ERR_UNDEFINED_UNCOMPRESSED_SIZE=sn,e.ERR_UNSUPPORTED_COMPRESSION=xs,e.ERR_UNSUPPORTED_ENCRYPTION=zs,e.ERR_UNSUPPORTED_FORMAT=rn,e.ERR_ZIP_NOT_EMPTY=an,e.HttpRangeReader=class extends hr{constructor(e,t={}){super(e,r.assign({},t,{useRangeHeader:!0}))}},e.HttpReader=hr,e.Reader=Qt,e.SplitDataReader=mr,e.SplitDataWriter=gr,e.TextReader=class extends er{constructor(e){super(new g([e],{type:"text/plain"}))}},e.TextWriter=class extends tr{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)})}}},e.Uint8ArrayReader=class extends Qt{constructor(e){super(),e=new p(e.buffer,e.byteOffset,e.byteLength),r.assign(this,{array:e,size:e.length})}readUint8Array(e,t){return this.array.slice(e,e+t)}},e.Uint8ArrayWriter=class extends $t{constructor(e){super(),this.defaultBufferSize=e||262144}init(e=0){r.assign(this,{offset:0,array:new p(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 p(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)}},e.Writer=$t,e.ZipReader=Ts,e.ZipReaderStream=class{constructor(e={}){const{readable:t,writable:r}=new F,s=new Ts(t,e).getEntriesGenerator();this.readable=new k({async pull(e){const{done:t,value:r}=await s.next();if(t)return e.close();const n={...r,readable:(()=>{const{readable:e,writable:t}=new F;if(r.getData)return(async()=>{try{await r.getData(t)}catch(e){try{await t.abort(e)}catch{}}})(),e})()};delete n.getData,e.enqueue(n)}}),this.writable=r}},e.ZipWriter=fn,e.ZipWriterStream=class{constructor(e={}){const{readable:t,writable:r}=new F;this.readable=t,this.zipWriter=new fn(r,e),this.pendingAddFileCalls=new l}transform(e){const t=this.zipWriter;let r;const{readable:s,writable:n}=new F({start(e){r=e},flush:()=>{(async()=>{try{await t.close()}catch(e){try{await t.writer.writable.abort(e)}catch{}}})()}});return pn(this,this.zipWriter.add(e,s),e=>r.error(e)),{readable:this.readable,writable:n}}writable(e){let t;const{readable:r,writable:s}=new F({start(e){t=e}});return pn(this,this.zipWriter.add(e,r),e=>t.error(e)),s}async close(e,r={}){return await y.all(t.from(this.pendingAddFileCalls)),this.zipWriter.close(e,r)}},e.configure=oe,e.getMimeType=()=>"application/octet-stream",e.terminateWorkers=async()=>{await y.allSettled(Ct.map(e=>(Bt(e),e.terminate())))}});
1
+ ((e,t)=>{"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).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:f,Uint8Array:p,Uint16Array:w,Uint32Array:h,DataView:m,Blob:g,Promise:y,TextEncoder:b,TextDecoder:S,document:z,crypto:x,btoa:E,TransformStream:F,ReadableStream:k,WritableStream:R,CompressionStream:D,DecompressionStream:A,navigator:v,Worker:T}="undefined"!=typeof globalThis?globalThis:this||self;var _=void 0!==z?z.currentScript:null;const C=4294967295,U=65535,N=255,O=67324752,I=134695760,M=I,W=33639248,L=101010256,P=101075792,H=117853008,Z=22,B=21589,V=2048,q=16384,K=2048,j=1024,Y="/",G=30,X=new o(2107,11,31),J=new o(1980,0,1),Q=void 0,$=1/0,ee="undefined",te="function";let re=2;try{typeof v!=ee&&v.hardwareConcurrency&&(re=v.hardwareConcurrency)}catch{}const se={workerURI:"./core/web-worker-wasm.js",wasmURI:"./core/streams/zlib-wasm/zlib-streams.wasm",chunkSize:65536,maxWorkers:re,terminateWorkerTimeout:5e3,workerStarvationTimeout:5e3,useWebWorkers:!0,useCompressionStream:!0,CompressionStream:typeof D!=ee&&D,DecompressionStream:typeof A!=ee&&A},ne=r.assign({},se);function ae(){return ne}function ie(e){return i.max(e.chunkSize,64)}function oe(e){const{baseURI:t,chunkSize:r,maxWorkers:s,terminateWorkerTimeout:n,workerStarvationTimeout:a,useCompressionStream:i,useWebWorkers:o,CompressionStream:c,DecompressionStream:l,CompressionStreamZlib:d,DecompressionStreamZlib:u,workerURI:f,wasmURI:p}=e;ce("baseURI",t),ce("wasmURI",p),ce("workerURI",f),ce("chunkSize",r),ce("maxWorkers",s),ce("terminateWorkerTimeout",n),ce("workerStarvationTimeout",a),ce("useCompressionStream",i),ce("useWebWorkers",o),ce("CompressionStream",c),ce("DecompressionStream",l),ce("CompressionStreamZlib",d),ce("DecompressionStreamZlib",u)}function ce(e,t){t!==Q&&(ne[e]=t)}const le=[];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;le[e]=t}class de{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^le[255&(t^e[r])];this.crc=t}get(){return~this.crc}}class ue extends F{constructor(){let e;const t=new de;super({transform(e,r){t.append(e),r.enqueue(e)},flush(){const r=new p(4);new m(r.buffer).setUint32(0,t.get()),e.value=r}}),e=this}}function fe(e){if(typeof b==ee){const t=new p((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 pe={concat(e,t){if(0===e.length||0===t.length)return e.concat(t);const r=e[e.length-1],s=pe.getPartial(r);return 32===s?e.concat(t):pe._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)+pe.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]=pe.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=pe.getPartial(n);return s.push(pe.partial(t+a&31,t+a>32?r:s.pop(),1)),s}},we={bytes:{fromBits(e){const t=pe.bitLength(e)/8,r=new p(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(pe.partial(8*(3&r),s)),t}}},he=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=we.utf8String.toBits(e));const r=t._buffer=pe.concat(t._buffer,e),s=t._length,n=t._length=s+pe.bitLength(e);if(n>9007199254740991)throw new f("Cannot hash more than 2^53 - 1 bits");const a=new h(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=pe.concat(t,[pe.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}},me={importKey:e=>new me.hmacSha1(we.bytes.toBits(e)),pbkdf2(e,t,r,s){if(r=r||1e4,0>s||0>r)throw new f("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 p=0;const w=pe;for(t=we.bytes.toBits(t),l=1;(n||1)>p;l++){for(a=i=e.encrypt(w.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)>p&&o<a.length;o++)u.setInt32(p,a[o]),p+=4}return d.slice(0,s/8)},hmacSha1:class{constructor(e){const t=this,r=t._hash=he,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 f("encrypt on already updated hmac called!");return this.update(e),this.digest(e)}}},ge=typeof x!=ee&&typeof x.getRandomValues==te,ye="Invalid password",be="Invalid signature",Se="zipjs-abort-check-password";function ze(e){if(ge)return x.getRandomValues(e);throw new f("Crypto API not supported")}const xe=16,Ee={name:"PBKDF2"},Fe=r.assign({hash:{name:"HMAC"}},Ee),ke=r.assign({iterations:1e3,hash:{name:"SHA-1"}},Ee),Re=["deriveBits"],De=[8,12,16],Ae=[16,24,32],ve=10,Te=[0,0,0,0],_e=typeof x!=ee,Ce=_e&&x.subtle,Ue=_e&&typeof Ce!=ee,Ne=we.bytes,Oe=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 f("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,f=257*n[a]^16843008*a;for(let r=0;4>r;r++)e[r][d]=f=f<<24^f>>>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 f("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,p,w,h=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[h>>>24]^o[m>>16&255]^c[g>>8&255]^l[255&y]^r[b],p=i[m>>>24]^o[g>>16&255]^c[y>>8&255]^l[255&h]^r[b+1],w=i[g>>>24]^o[y>>16&255]^c[h>>8&255]^l[255&m]^r[b+2],y=i[y>>>24]^o[h>>16&255]^c[m>>8&255]^l[255&g]^r[b+3],b+=4,h=u,m=p,g=w;for(let e=0;4>e;e++)n[t?3&-e:e]=d[h>>>24]<<24^d[m>>16&255]<<16^d[g>>8&255]<<8^d[255&y]^r[b++],u=h,h=m,m=g,g=y,y=u;return n}},Ie=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=pe.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 pe.clamp(t,n)}},Me=me.hmacSha1;let We=_e&&Ue&&typeof Ce.importKey==te,Le=_e&&Ue&&typeof Ce.deriveBits==te;class Pe extends F{constructor({password:e,rawPassword:t,encryptionStrength:s,checkPasswordOnly:n}){super({start(){r.assign(this,{ready:new y(e=>this.resolveReady=e),password:Ve(e,t),strength:s-1,pending:new p})},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 Be(e,t,r,Ke(s,0,De[t])),a=Ke(s,De[t]);if(n[0]!=a[0]||n[1]!=a[1])throw new f(ye)})(r,a,s,Ke(e,0,De[a]+2)),e=Ke(e,De[a]+2),n?t.error(new f(Se)):i()):await o;const c=new p(e.length-ve-(e.length-ve)%xe);t.enqueue(Ze(r,e,c,0,ve,!0))},async flush(e){const{ctr:t,hmac:r,pending:s,ready:n}=this;if(r&&t){await n;const a=Ke(s,0,s.length-ve),i=Ke(s,s.length-ve);let o=new p;if(a.length){const e=Ye(Ne,a);r.update(e);const s=t.update(e);o=je(Ne,s)}const c=Ke(je(Ne,r.digest()),0,ve);let l=s.length<ve?1:0;for(let e=0;ve>e;e++)l|=c[e]^i[e];if(l)throw new f(be);e.enqueue(o)}}})}}class He extends F{constructor({password:e,rawPassword:t,encryptionStrength:s}){let n;super({start(){r.assign(this,{ready:new y(e=>this.resolveReady=e),password:Ve(e,t),strength:s-1,pending:new p})},async transform(e,t){const r=this,{password:s,strength:n,resolveReady:a,ready:i}=r;let o=new p;s?(o=await(async(e,t,r)=>{const s=ze(new p(De[t]));return qe(s,await Be(e,t,r,s))})(r,n,s),a()):await i;const c=new p(o.length+e.length-e.length%xe);c.set(o,0),t.enqueue(Ze(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 p;if(s.length){const e=t.update(Ye(Ne,s));r.update(e),i=je(Ne,e)}n.signature=je(Ne,r.digest()).slice(0,ve),e.enqueue(qe(i,n.signature))}}}),n=this}}function Ze(e,t,r,s,n,a){const{ctr:i,hmac:o,pending:c}=e;c.length&&(t=qe(c,t));const l=t.length-n;let d;for(r=((e,t)=>{if(t&&t>e.length){const r=e;(e=new p(t)).set(r,0)}return e})(r,s+(l-l%xe)),d=0;l-xe>=d;d+=xe){const e=Ye(Ne,Ke(t,d,d+xe));a&&o.update(e);const n=i.update(e);a||o.update(n),r.set(je(Ne,n),d+s)}return e.pending=Ke(t,d),r}async function Be(e,s,n,a){e.password=null;const i=await(async(e,t,r,s,n)=>{if(!We)return me.importKey(t);try{return await Ce.importKey("raw",t,r,!1,n)}catch{return We=!1,me.importKey(t)}})(0,n,Fe,0,Re),o=await(async(e,t,r)=>{if(!Le)return me.pbkdf2(t,e.salt,ke.iterations,r);try{return await Ce.deriveBits(e,t,r)}catch{return Le=!1,me.pbkdf2(t,e.salt,ke.iterations,r)}})(r.assign({salt:a},ke),i,8*(2*Ae[s]+2)),c=new p(o),l=Ye(Ne,Ke(c,0,Ae[s])),d=Ye(Ne,Ke(c,Ae[s],2*Ae[s])),u=Ke(c,2*Ae[s]);return r.assign(e,{keys:{key:l,authentication:d,passwordVerification:u},ctr:new Ie(new Oe(l),t.from(Te)),hmac:new Me(d)}),u}function Ve(e,t){return t===Q?fe(e):t}function qe(e,t){let r=e;return e.length+t.length&&(r=new p(e.length+t.length),r.set(e,0),r.set(t,e.length)),r}function Ke(e,t,r){return e.subarray(t,r)}function je(e,t){return e.fromBits(t)}function Ye(e,t){return e.toBits(t)}class Ge extends F{constructor({password:e,rawPassword:t,passwordVerification:s,checkPasswordOnly:n}){super({start(){r.assign(this,{password:e,rawPassword:t,passwordVerification:s}),$e(this,e,t)},transform(e,t){const r=this;if(r.password||r.rawPassword){const t=Je(r,e.subarray(0,12));if(r.password=r.rawPassword=null,0!=(t.at(-1)^r.passwordVerification))throw new f(ye);e=e.subarray(12)}n?t.error(new f(Se)):t.enqueue(Je(r,e))}})}}class Xe extends F{constructor({password:e,rawPassword:t,passwordVerification:s}){super({start(){r.assign(this,{password:e,rawPassword:t,passwordVerification:s}),$e(this,e,t)},transform(e,t){const r=this;let s,n;if(r.password||r.rawPassword){r.password=r.rawPassword=null;const t=ze(new p(12));t[11]=r.passwordVerification,s=new p(e.length+t.length),s.set(Qe(r,t),0),n=12}else s=new p(e.length),n=0;s.set(Qe(r,e),n),t.enqueue(s)}})}}function Je(e,t){const r=new p(t.length);for(let s=0;s<t.length;s++)r[s]=tt(e)^t[s],et(e,r[s]);return r}function Qe(e,t){const r=new p(t.length);for(let s=0;s<t.length;s++)r[s]=tt(e)^t[s],et(e,t[s]);return r}function $e(e,t,s){const n=[305419896,591751049,878082192];if(r.assign(e,{keys:n,crcKey0:new de(n[0]),crcKey2:new de(n[2])}),s)for(let t=0;t<s.length;t++)et(e,s[t]);else for(let r=0;r<t.length;r++)et(e,t.charCodeAt(r))}function et(e,t){let[,r]=e.keys;e.crcKey0.append([t]);const s=~e.crcKey0.get();r=st(i.imul(st(r+rt(s)),134775813)+1),e.crcKey2.append([r>>>24]);const n=~e.crcKey2.get();e.keys=[s,r,n]}function tt(e){const t=2|e.keys[2];return rt(i.imul(t,1^t)>>>8)}function rt(e){return 255&e}function st(e){return 4294967295&e}const nt="Invalid uncompressed size",at="Invalid compressed data";class it extends F{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,f,p=super.readable;a&&!o||!c||(u=new ue,p=dt(p,u)),n&&(p=lt(p,i,{level:l,chunkSize:t},s,r,s)),a&&(o?p=dt(p,new Xe(e)):(f=new He(e),p=dt(p,f))),ct(d,p,()=>{let e;a&&!o&&(e=f.signature),a&&!o||!c||(e=new m(u.value.buffer).getUint32(0)),d.signature=e})}}class ot extends F{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,p,w=super.readable;a&&(n?w=dt(w,new Ge(e)):(p=new Pe(e),w=dt(w,p))),c&&(w=lt(w,l,{chunkSize:t,deflate64:d},s,r,s),w=(e=>{const t=e.getReader();return new k({async pull(e){let r;try{r=await t.read()}catch(e){if(e&&e.message)throw e;const t=new f(at);throw t.cause=e,t}const{value:s,done:n}=r;n?e.close():e.enqueue(s)},cancel:e=>t.cancel(e)})})(w)),a&&!n||!i||(u=new ue,w=dt(w,u)),ct(this,w,()=>{if((!a||n)&&i){const e=new m(u.value.buffer);if(o!=e.getUint32(0,!1))throw new f(be)}})}}function ct(e,t,s){t=dt(t,new F({flush:s})),r.defineProperty(e,"readable",{get:()=>t})}function lt(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 dt(e,t){return e.pipeThrough(t)}const ut="data",ft="deflate",pt="inflate";class wt extends F{constructor(e,t){super({});const s=this,{codecType:n}=e;let a;n.startsWith(ft)?a=it:n.startsWith(pt)&&(a=ot),s.outputSize=0;let i=0;const o=new a(e,t),c=super.readable,l=new F({transform(e,t){e&&e.length&&(i+=e.length,t.enqueue(e))},flush(){r.assign(s,{inputSize:i})}}),d=new F({transform(t,r){if(t&&t.length&&(r.enqueue(t),s.outputSize+=t.length,e.outputSize!==Q&&s.outputSize>e.outputSize))throw new f(nt)},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 ht extends F{constructor(e){let t;1>e&&(e=65536),super({transform:(r,s)=>{if(t){const e=new p(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 mt={type:"module"},gt="error";let yt,bt,St,zt,xt=!0;try{xt=typeof structuredClone==te&&structuredClone(new DOMException("","AbortError")).code!==Q}catch{}class Et{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 ht(ie(a))).pipeThrough(new Ft(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)}}}),yt===Q&&(yt=typeof T!=ee),(o&&yt?Dt:Rt)(e,a)}}class Ft extends F{constructor({onstart:e,onprogress:t,size:r,onend:s}){let n=0;super({async start(){e&&await kt(e,r)},async transform(e,s){n+=e.length,t&&await kt(t,n,r),s.enqueue(e)},async flush(){s&&await kt(s,n)}})}}async function kt(e,...t){try{await e(...t)}catch{}}function Rt(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(ft)?n.CompressionStreamZlib:n.DecompressionStreamZlib;t&&!t.requiresModule||(e.useCompressionStream=!0)}a=new wt(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 Dt(e,t){const{baseURI:s,chunkSize:n}=t;let{wasmURI:a}=t;if(!e.interface){let i;typeof a==te&&(a=a());try{i=vt(e.workerURI,s,e)}catch{return yt=!1,Rt(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 F,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=_t({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 f(),await l,e}catch(e){await f(),d();try{await l}catch{}throw e}async function f(){if(!u&&!c.locked)try{await c.getWriter().close()}catch{}}})(e,{chunkSize:n,wasmURI:a,baseURI:s})}})}return e.interface}function At(e){const{worker:t}=e;if(t)try{t.terminate()}catch{}e.interface=null}function vt(e,t,s,n,a=!0){let i,o,c;if(St===Q||bt!==e){const r=typeof e==te;o=r?e(a):e;const l=o.startsWith("data:"),d=o.startsWith("blob:");if(l||d){n===Q&&(n=!1),n&&(c=mt);try{i=new T(o,c)}catch(a){if(d)try{u.revokeObjectURL(o)}catch{}if(r&&d)return vt(e,t,s,n,!1);if(n)throw a;return vt(e,t,s,!0,!1)}}else{n===Q&&(n=!0),n&&(c=mt);try{o=new u(o,t)}catch{}try{i=new T(o,c)}catch(r){if(n)throw r;return vt(e,t,s,!1,a)}}bt=e,St=o,zt=c}else i=new T(St,zt);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:w,generation:h}=t,m=()=>t.generation!=h;try{if(o){const{message:e,stack:t,code:s,name:n,outputSize:a}=o,i=new f(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()||_t({type:ut,value:e,done:r,messageId:a},t)}s==ut&&(await l.ready,await l.write(new p(n)),m()||_t({type:"ack",messageId:a},t)),"close"==s&&g(null,i)}}catch(o){m()||(At(t),g(o))}function g(e,t){m()||(e?u(e):d(t),l&&l.releaseLock(),w())}})(e,s)),i.addEventListener(gt,e=>Tt(e,s)),i.addEventListener("messageerror",e=>Tt(e,s)),i}function Tt(e,t){e.preventDefault&&e.preventDefault();const{rejectResult:r,writer:s,onTaskFinished:n}=t;At(t),r&&(r(e.error||new f(e.message||gt)),s&&s.releaseLock(),n())}function _t(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&&xt?(n&&i.push(n),a&&i.push(a)):e.readable=e.writable=null,i.length)try{return t.postMessage(e,i),!0}catch{xt=!1,e.readable=e.writable=null,t.postMessage(e)}else t.postMessage(e)}catch(e){throw r&&r.releaseLock(),e}}let Ct=[];const Ut=[];let Nt,Ot,It=0;async function Mt(e,t){const{options:r,config:s}=t,{transferStreams:a,useWebWorkers:i,useCompressionStream:o,compressed:c,signed:l,encrypted:d}=r,{workerURI:u,maxWorkers:f}=s;t.transferStreams=a||a===Q;const p=!(c||l||d||t.transferStreams);return t.useWebWorkers=!p&&(i||i===Q&&s.useWebWorkers),t.workerURI=t.useWebWorkers&&u?u:Q,r.useCompressionStream=o||o===Q&&s.useCompressionStream,(await(async()=>{const r=Ct.find(e=>!e.busy);if(r)return Zt(r),new Et(r,e,t,w);if(Ct.length<f){const r={indexWorker:It};return It++,Ct.push(r),new Et(r,e,t,w)}return new y(r=>{Ut.push({resolve:r,stream:e,workerOptions:t}),Ot=s.workerStarvationTimeout,Wt()})})()).run();function w(e){if(Lt(),Ut.length){const[{resolve:t,stream:r,workerOptions:s}]=Ut.splice(0,1);t(new Et(e,r,s,w)),Wt()}else e.worker?(Zt(e),((e,t)=>{const{config:r}=t,{terminateWorkerTimeout:s}=r;n.isFinite(s)&&s>=0&&(e.terminated?e.terminated=!1:e.terminateTimeout=setTimeout(async()=>{Ct=Ct.filter(t=>t!=e);try{await e.terminate()}catch{}},s))})(e,t)):Ct=Ct.filter(t=>t!=e)}}function Wt(){!Nt&&Ut.length&&n.isFinite(Ot)&&Ot>=0&&(Nt=setTimeout(Pt,Ot))}function Lt(){Nt&&(clearTimeout(Nt),Nt=null)}function Pt(){if(Nt=null,Ut.length){const[{resolve:e,stream:t,workerOptions:s}]=Ut.splice(0,1),n=r.assign({},s,{useWebWorkers:!1,workerURI:Q});e(new Et({},t,n,Ht)),Wt()}}function Ht(){Lt(),Wt()}function Zt(e){const{terminateTimeout:t}=e;t&&(clearTimeout(t),e.terminateTimeout=null)}const Bt="HTTP error ",Vt="HTTP Range not supported",qt="Content-Range",Kt="Range",jt="GET",Yt="bytes",Gt=65536,Xt="writable";class Jt{constructor(){this.size=0}init(){this.initialized=!0}}class Qt extends Jt{get readable(){const e=this,{chunkSize:t=Gt}=e,r=new k({start(){this.chunkOffset=0},async pull(s){const{offset:n=0,size:a,diskNumberStart:o}=r,{chunkOffset:c}=this,l=a===Q?t:i.min(t,a-c),d=await zr(e,n+c,l,o);s.enqueue(d),c+t>a||a===Q&&!d.length&&l?s.close():this.chunkOffset+=t}});return r}}class $t extends Jt{constructor(){super();const e=this,t=new R({write(t){if(!e.initialized)throw new f("Writer not initialized");return e.writeUint8Array(t)}});r.defineProperty(e,Xt,{get:()=>t})}writeUint8Array(){}}class er extends Qt{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 p(a)}}class tr extends Jt{constructor(e){super();const t=this,s=new F,n=[];e&&n.push(["Content-Type",e]),r.defineProperty(t,Xt,{get:()=>s.writable}),t.blob=new d(s.readable,{headers:n}).blob(),t.blob.catch(()=>{})}getData(){return this.blob}}class rr extends Qt{constructor(e,t){super(),nr(this,e,t)}async init(){await ar(this,pr,lr),super.init()}readUint8Array(e,t){return ir(this,e,t,pr,lr)}}class sr extends Qt{constructor(e,t){super(),nr(this,e,t)}async init(){await ar(this,wr,dr),super.init()}readUint8Array(e,t){return ir(this,e,t,wr,dr)}}function nr(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 ar(e,t,r){const{url:s,preventHeadRequest:a,useRangeHeader:i,forceRangeRequests:o,combineSizeEocd:c}=e;if((e=>{const{baseURI:t}=ae(),{protocol:r}=new u(e,t);return"http:"==r||"https:"==r})(s)&&(i||o)&&(void 0===a||a)){const s=await t(jt,e,or(e,c?-22:void 0)),a=s.headers.get("Accept-Ranges");if(!(o||a&&a.toLowerCase()==Yt))throw new f(Vt);{if(c){const t=new p(await s.arrayBuffer());206==s.status&&t.length==Z&&(e.eocdCache=t)}let a;const i=s.headers.get(qt);if(i){const e=i.trim().split(/\s*\/\s*/);if(e.length){const t=e[1];t&&"*"!=t&&(a=n(t))}}a===Q?await fr(e,t,r):e.size=a}}else await fr(e,t,r)}async function ir(e,t,r,s,a){const{useRangeHeader:i,forceRangeRequests:o,eocdCache:c,size:l,options:d}=e;if(i||o){if(c&&t==l-Z&&r==Z)return c;if(l>t&&0!==r){t+r>l&&(r=l-t);const a=await s(jt,e,or(e,t,r));if(206!=a.status)throw new f(Vt);const i=a.headers.get(qt);if(i){const e=n(i.trim().split(/[\s-]+/)[1]);if(!n.isNaN(e)&&e!=t)throw new f(Vt)}const o=new p(await a.arrayBuffer());if(o.length!=r)throw new f(Vt);return o}return new p}{const{data:s}=e;return s||await a(e,d),new p(e.data.subarray(t,t+r))}}function or(e,t=0,s=1){return r.assign({},cr(e),{[Kt]:Yt+"="+(0>t?t:t+"-"+(t+s-1))})}function cr({options:e}){const{headers:t}=e;if(t)return Symbol.iterator in t?r.fromEntries(t):t}async function lr(e){await ur(e,pr)}async function dr(e){await ur(e,wr)}async function ur(e,t){const r=await t(jt,e,cr(e));e.data=new p(await r.arrayBuffer()),e.size=e.data.length}async function fr(e,t,r){if(e.preventHeadRequest)await r(e,e.options);else{const s=await t("HEAD",e,cr(e)),a=s.headers.get("Content-Length");a&&!s.headers.get("Content-Encoding")?e.size=n(a):await r(e,e.options)}}async function pr(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 f(Vt):new f(Bt+(i.statusText||i.status))}function wr(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 f(Vt):new f(Bt+(i.statusText||i.status)))},!1),i.addEventListener("error",e=>a(e.detail?e.detail.error:new f("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 hr extends Qt{constructor(e,t={}){super(),r.assign(this,{url:e,reader:t.useXHR&&!t.fetch?new sr(e,t):new rr(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 mr extends Qt{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 Sr(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 p(t);const o=await zr(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 zr(l,c,t)}else a=new p;return s.lastDiskNumber=i.max(o,s.lastDiskNumber),a}}class gr extends Jt{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 R({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 f("Writer iterator completed too soon");n=r,n.size=0,n.maxSize&&(s.maxSize=n.maxSize),s.availableSize=s.maxSize,await Sr(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,Xt,{get:()=>o})}}class yr{constructor(e){return t.isArray(e)&&(e=new mr(e)),e instanceof k&&(e={readable:e}),e}}class br{constructor(e){return e.writable===Q&&typeof e.next==te&&(e=new gr(e)),e instanceof R&&(e={writable:e}),e.size===Q&&(e.size=0),e instanceof gr||r.assign(e,{diskNumber:0,diskOffset:0,availableSize:$,maxSize:$}),e}}async function Sr(e,t){if(!e.init||e.initialized)return y.resolve();await e.init(t)}function zr(e,t,r,s){return e.readUint8Array(t,r,s)}const xr="\0☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ".split("");function Er(e,t){return t&&"cp437"==t.trim().toLowerCase()?(e=>{{let t="";for(let r=0;r<e.length;r++)t+=xr[e[r]];return t}})(e):new S(t,{ignoreBOM:!0}).decode(e)}const Fr="filename",kr="rawFilename",Rr="comment",Dr="rawComment",Ar="uncompressedSize",vr="compressedSize",Tr="offset",_r="diskNumberStart",Cr="lastModDate",Ur="rawLastModDate",Nr="lastAccessDate",Or="creationDate",Ir="rawCreationDate",Mr="internalFileAttributes",Wr="externalFileAttributes",Lr="msdosAttributesRaw",Pr="msdosAttributes",Hr="msDosCompatible",Zr="zip64",Br="encrypted",Vr="version",qr="versionMadeBy",Kr="zipCrypto",jr="directory",Yr="executable",Gr="compressionMethod",Xr="signature",Jr="extraField",Qr="unixMode",$r="setuid",es="setgid",ts="sticky",rs=[Fr,kr,Ar,vr,Cr,Ur,Rr,Dr,Nr,Or,Ir,Tr,_r,Mr,Wr,Lr,Pr,Hr,Zr,Br,Vr,qr,Kr,jr,Yr,Gr,Xr,Jr,"extraFieldUnix","extraFieldInfoZip","uid","gid",Qr,$r,es,ts,"bitFlag","filenameUTF8","commentUTF8","rawExtraField","extraFieldZip64","extraFieldUnicodePath","extraFieldUnicodeComment","extraFieldAES","extraFieldNTFS","extraFieldExtendedTimestamp"];class ss{constructor(e){rs.forEach(t=>this[t]=e[t])}}const ns="password",as="rawPassword",is="passThrough",os="signal",cs="checkAmbiguity",ls="useWebWorkers",ds="useCompressionStream",us="transferStreams",fs="preventClose",ps="offset",ws="File format is not recognized",hs="End of central directory not found",ms="End of Zip64 central directory locator not found",gs="Central directory header not found",ys="Local file header not found",bs="Zip64 extra field not found",Ss="File contains encrypted entry",zs="Encryption method not supported",xs="Compression method not supported",Es="Split zip file",Fs="Overlapping entry found",ks="Ambiguous archive",Rs="utf-8",Ds="cp437",As=[[Ar,C],[vr,C],[Tr,C],[_r,U]],vs={[U]:{getValue:Bs,bytes:4},[C]:{getValue:Vs,bytes:8}};class Ts{constructor(e,t={}){r.assign(this,{reader:new yr(e),options:t,config:ae(),readRanges:new c})}async*getEntriesGenerator(e={}){const t=this;let{reader:s}=t;const{config:n}=t;if(await Sr(s),s.size!==Q&&s.readUint8Array||(s=new er(await new d(s.readable).blob()),await Sr(s)),s.size<Z)throw new f(ws);s.chunkSize=ie(n);const a=await(async(e,t,r)=>{const s=new p(4);var n;return n=t,qs(s).setUint32(0,n,!0),await a(22)||await a(i.min(1048582,r));async function a(t){const n=r-t,a=await zr(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,L,s.size);if(!a)throw Bs(qs(await zr(s,0,4)))==I?new f(Es):new f(hs);const o=qs(a);let c=Bs(o,12),u=Bs(o,16);const w=a.offset,h=Zs(o,20),m=w+Z+h,g=Ws(t,e,cs);g&&m!=s.size&&Ms("appended data");let b=Zs(o,4);const S=s.lastDiskNumber||0;let z,x,E=Zs(o,6),k=Zs(o,10),R=0;if(u==C||c==C||k==U||E==U){const e=20>a.offset?new p:await zr(s,a.offset-20,20),t=qs(e);if(20==e.length&&Bs(t,0)==H){u=Vs(t,8);let e=await zr(s,u,56,-1),r=qs(e);const n=a.offset-20-56-(s.lastDiskOffset||0);if((56>e.length||Bs(r,0)!=P)&&u!=n&&n>=0){const t=u;u=n,u>t&&(R=u-t),e=await zr(s,u,56,-1),r=qs(e)}if(56>e.length||Bs(r,0)!=P)throw new f(ms);x=!0,b==U?b=Bs(r,16):g&&b!=Bs(r,16)&&Ms("mismatched zip64 end of central directory record"),E==U?E=Bs(r,20):g&&E!=Bs(r,20)&&Ms("mismatched zip64 end of central directory record"),k==U?k=Vs(r,32):g&&k!=Vs(r,32)&&Ms("mismatched zip64 end of central directory record"),c==C?c=Vs(r,40):g&&c!=Vs(r,40)&&Ms("mismatched zip64 end of central directory record"),u=Vs(r,48)+R}}const D=c,A=a.offset-(x?76:0);if(u<s.size||(R=s.size-u-c-Z,u=s.size-c-Z),S!=b)throw new f(Es);if(0>u)throw new f(ws);let v=0,T=await zr(s,u,c,E),_=qs(T);if(c){if(4>T.length)throw new f(ws);const e=A-c-(s.lastDiskOffset||0);if(Bs(_,v)!=W&&u!=e&&E==b){const t=u;u=e,u>t&&(R+=u-t),T=await zr(s,u,c,E),_=qs(T)}}const O=A-u-(s.lastDiskOffset||0);if(c==O||0>O||E!=b||(c=O,T=await zr(s,u,c,E),_=qs(T)),0>u||u>=s.size)throw new f(ws);z=u;const M=Ws(t,e,"filenameEncoding"),B=Ws(t,e,"commentEncoding"),V=g?new l:Q;let G;for(let a=0;k>a;a++){const o=new _s(s,n,t.options);if(v+46>T.length||Bs(_,v)!=W)throw new f(gs);Cs(o,_,v+6);const c=!!o.bitFlag.languageEncodingFlag,l=v+46,u=l+o.filenameLength,p=u+o.extraFieldLength,w=Zs(_,v+4),h=!(w>>8),m=w>>8==3,b=T.subarray(l,u),S=Zs(_,v+32),x=p+S,E=T.subarray(p,x),D=c,A=c,C=Bs(_,v+38),O=C&N,I={readOnly:!!(1&O),hidden:!!(2&O),system:!!(4&O),directory:!!(16&O),archive:!!(32&O)},L=Bs(_,v+42),P=Ws(t,e,"decodeText")||Er,H=D?Rs:M||Ds,Z=A?Rs:B||Ds;let X=P(b,H);X===Q&&(X=Er(b,H));let J=P(E,Z);J===Q&&(J=Er(E,Z)),r.assign(o,{index:a,versionMadeBy:w,msDosCompatible:h,compressedSize:0,uncompressedSize:0,commentLength:S,offset:L,diskNumberStart:Zs(_,v+34),internalFileAttributes:Zs(_,v+36),externalFileAttributes:C,msdosAttributesRaw:O,msdosAttributes:I,rawFilename:b,filenameUTF8:D,commentUTF8:A,rawExtraField:T.subarray(u,p),rawComment:E,filename:X,comment:J}),Us(o,o,_,v+6),o.offset+=R,z=i.min(o.offset,z),g&&(V.has(o.filename)&&(G=!0),V.add(o.filename));const $=o.externalFileAttributes>>16&U;o.unixMode===Q&&16877&$&&(o.unixMode=$);const ee=!!(o.unixMode&K),te=!!(o.unixMode&j),re=!!(512&o.unixMode),se=o.unixMode!==Q?!!(73&o.unixMode):m&&!!(73&$),ne=o.unixMode!==Q&&(61440&o.unixMode)==q,ae=(61440&$)==q;r.assign(o,{setuid:ee,setgid:te,sticky:re,unixExternalUpper:$,internalFileAttribute:o.internalFileAttributes,externalFileAttribute:o.externalFileAttributes,executable:se,directory:ne||ae||h&&I.directory||o.filename.endsWith(Y)&&!o.uncompressedSize,zipCrypto:o.encrypted&&!o.extraFieldAES});const ie=new ss(o);ie.getData=(e,r)=>o.getData(e,ie,t.readRanges,r),ie.arrayBuffer=async e=>{const r=new F,[s]=await y.all([new d(r.readable).arrayBuffer(),o.getData(r,ie,t.readRanges,e)]);return s},v=x;const{onprogress:oe}=e;if(oe)try{await oe(a+1,k,new ss(o))}catch{}yield ie}g&&v!=D&&Ms("trailing central directory data"),G&&Ms("duplicate filename"),g&&(R||k&&z>0)&&Ms("prepended data");const X=Ws(t,e,"extractPrependedData"),J=Ws(t,e,"extractAppendedData");return X&&(t.prependedData=z>0?await zr(s,0,z):new p),t.comment=h?await zr(s,w+Z,h):new p,J&&(t.appendedData=m<s.size?await zr(s,m,s.size-m):new p),!0}async getEntries(e={}){const t=[];for await(const r of this.getEntriesGenerator(e))t.push(r);return t}async close(){}}class _s{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:w,compressionMethod:h,config:m,bitFlag:g,signature:y,rawLastModDate:b,uncompressedSize:S,compressedSize:z}=a,{dataDescriptor:x}=g,E=t.localDirectory={},F=await zr(o,l,G,d),k=qs(F);let D=Ws(a,n,ns),A=Ws(a,n,as);const v=Ws(a,n,is);if(D=D&&D.length&&D,A=A&&A.length&&A,u&&99!=u.originalCompressionMethod)throw new f(xs);if(0!=h&&8!=h&&9!=h&&!v)throw new f(xs);if(F.length<G||Bs(k,0)!=O)throw new f(ys);Cs(E,k,4);const{extraFieldLength:T,filenameLength:_}=E,C=Ws(a,n,cs);let U=new p;if(C&&(_||T)){const e=await zr(o,l+G,_+T,d);U=e.subarray(0,_),E.rawExtraField=e.subarray(_)}else E.rawExtraField=T?await zr(o,l+G+_,T,d):new p;Us(a,E,k,4,!0),C&&((e,t,r)=>{const{rawFilename:s}=e;(r.length!=s.length||r.some((e,t)=>e!=s[t]))&&Ms("mismatched local file header (filename)"),(2057&t.rawBitFlag)!=(2057&e.rawBitFlag)&&Ms("mismatched local file header (general purpose bit flag)"),t.compressionMethod!=e.compressionMethod&&Ms("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||Ms("mismatched local file header (signature or sizes)")})(a,E,U);const{lastAccessDate:I,creationDate:W}=E;I&&(t.lastAccessDate=I),W&&(t.creationDate=W);const L=a.encrypted&&E.encrypted&&!v,P=L&&!u;if(v||(t.zipCrypto=P),L){if(!P&&u.strength===Q)throw new f(zs);if(!D&&!A)throw new f(Ss)}const H=l+G+_+T,Z=z,B=o.readable;r.assign(B,{diskNumberStart:d,offset:H,size:Z});const V=Ws(a,n,os),q=Ws(a,n,"checkPasswordOnly");let K=Ws(a,n,"checkOverlappingEntry");const j=Ws(a,n,"checkOverlappingEntryOnly");j&&(K=!0);const{onstart:Y,onprogress:X,onend:J}=n,$=9==h;let ee=Ws(a,n,ds);$&&(ee=!1);const te={options:{codecType:pt,password:D,rawPassword:A,zipCrypto:P,encryptionStrength:u&&u.strength,signed:Ws(a,n,"checkSignature")&&!v,passwordVerification:P&&(x?b>>>8&N:y>>>24&N),outputSize:v?z:S,signature:y,compressed:0!=h&&!v,encrypted:L,useWebWorkers:Ws(a,n,ls),useCompressionStream:ee,transferStreams:Ws(a,n,us),deflate64:$,checkPasswordOnly:q},config:m,streamOptions:{signal:V,size:Z,onstart:Y,onprogress:X,onend:J}};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:p})=>{let w=0;if(n&&e.readers)for(let t=0;t<i.min(n,e.readers.length);t++)w+=e.readers[t].size;let h=0;if(d&&(h=u?20:12),h){const r=await zr(e,l+o,h+4,n);if(r.length==h+4&&Bs(qs(r),0)==M){const e=Bs(qs(r),4);let s,n;u?(s=Vs(qs(r),8),n=Vs(qs(r),16)):(s=Bs(qs(r),8),n=Bs(qs(r),12)),(t.encrypted&&!t.zipCrypto||e==a)&&s==o&&n==c&&(h+=4)}}const m={start:w+s,end:w+l+o+h,fileEntry:t};for(const[e,t]of p)if(e!=r&&m.start<t.end&&t.start<m.end){const e=new f(Fs);throw e.overlappingEntry=t.fileEntry,e}p.set(r,m)})({reader:o,fileEntry:t,index:c,offset:l,diskNumberStart:d,signature:y,compressedSize:z,uncompressedSize:S,dataOffset:H,dataDescriptor:x||E.bitFlag.dataDescriptor,extraFieldZip64:w||E.extraFieldZip64,readRanges:s});try{if(!j){q&&(e=new R),e=new br(e),await Sr(e,v?z:S),({writable:re}=e);const{outputSize:t}=await Mt({readable:B,writable:re},te);if(e.size+=t,t!=(v?z:S))throw new f(nt)}}catch(t){if(t.outputSize!==Q&&(e.size+=t.outputSize),!q||t.message!=Se)throw t}finally{Ws(a,n,fs)||!re||re.locked||await re.getWriter().close()}return q||j?Q:e.getData?e.getData():re}}function Cs(e,t,s){const n=e.rawBitFlag=Zs(t,s+2),a=!(1&~n),i=Bs(t,s+6);r.assign(e,{encrypted:a,version:Zs(t,s),bitFlag:{level:(6&n)>>1,dataDescriptor:!(8&~n),languageEncodingFlag:(n&V)==V},rawLastModDate:i,lastModDate:Ls(i),filenameLength:Zs(t,s+22),extraFieldLength:Zs(t,s+24)})}function Us(e,t,s,n,a){const{rawExtraField:i}=t,l=t.extraField=new c,d=qs(new p(i));let u=0;try{for(;u<i.length;){const e=Zs(d,u),t=Zs(d,u+2);l.set(e,{type:e,data:i.slice(u+4,u+4+t)}),u+=4+t}}catch{}const w=Zs(s,n+4);r.assign(t,{signature:Bs(s,n+10),compressedSize:Bs(s,n+14),uncompressedSize:Bs(s,n+18)});const h=l.get(1);h&&(((e,t)=>{t.zip64=!0;const r=qs(e.data),s=As.filter(([e,r])=>t[e]==r),n=s.reduce((e,[,t])=>e+vs[t].bytes,0);if(e.data.length<n)throw new f(bs);for(let n=0,a=0;n<s.length;n++){const[i,o]=s[n],c=vs[o];t[i]=e[i]=c.getValue(r,a),a+=c.bytes}})(h,t),t.extraFieldZip64=h);const m=l.get(28789);m&&(Ns(m,Fr,kr,t,e),t.extraFieldUnicodePath=m);const g=l.get(25461);g&&(Ns(g,Rr,Dr,t,e),t.extraFieldUnicodeComment=g);const y=l.get(39169);y&&y.data.length>=7?(((e,t,s)=>{const n=qs(e.data),a=Hs(n,4);r.assign(e,{vendorVersion:Hs(n,0),vendorId:Hs(n,2),strength:a,originalCompressionMethod:s,compressionMethod:Zs(n,5)}),t.compressionMethod=e.compressionMethod})(y,t,w),t.extraFieldAES=y):t.compressionMethod=w;const b=l.get(10);b&&(((e,t)=>{const s=qs(e.data);let n,a=4;try{for(;a<e.data.length&&!n;){const t=Zs(s,a),r=Zs(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=qs(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:Ps(a),lastAccessDate:Ps(i),creationDate:Ps(o)};r.assign(e,c),r.assign(t,c)}}catch{}})(b,t),t.extraFieldNTFS=b);const S=l.get(30805);if(S)Os(S,t,!1),t.extraFieldUnix=S;else{const e=l.get(30837);e&&(Os(e,t,!0),t.extraFieldInfoZip=e)}const z=l.get(B);z&&(((e,t,r)=>{if(!e.data.length)return;const s=qs(e.data),n=Hs(s,0),a=[],i=[];r?(1&~n||(a.push(Cr),i.push(Ur)),2&~n||(a.push(Nr),i.push("rawLastAccessDate")),4&~n||(a.push(Or),i.push(Ir))):5>e.data.length||(a.push(Cr),i.push(Ur));let c=1;a.forEach((r,n)=>{if(e.data.length>=c+4){const a=Bs(s,c);t[r]=e[r]=new o(1e3*(0|a));const l=i[n];e[l]=a}c+=4})})(z,t,a),t.extraFieldExtendedTimestamp=z);const x=l.get(6534);x&&(t.extraFieldUSDZ=x)}function Ns(e,t,s,n,a){if(5>e.data.length)return void(e.valid=!1);const i=qs(e.data),o=new de;o.append(a[s]);const c=qs(new p(4));c.setUint32(0,o.get(),!0);const l=Bs(i,1);r.assign(e,{version:Hs(i,0),[t]:Er(e.data.subarray(5)),valid:!a.bitFlag.languageEncodingFlag&&l==Bs(c,0)}),e.valid&&(n[t]=e[t],n[t+"UTF8"]=!0)}function Os(e,t,s){try{const n=qs(new p(e.data));let a,i;if(s){let t=0;const s=Hs(n,t++),o=Hs(n,t++);a=Is(e.data.subarray(t,t+o)),t+=o;const c=Hs(n,t++);i=Is(e.data.subarray(t,t+c)),r.assign(e,{version:s,uid:a,gid:i})}else 4>e.data.length||(a=Zs(n,0),i=Zs(n,2),r.assign(e,{uid:a,gid:i}));a!==Q&&(t.uid=a),i!==Q&&(t.gid=i)}catch{}}function Is(e){const t=new p(4);return t.set(e,0),new m(t.buffer,t.byteOffset,4).getUint32(0,!0)}function Ms(e){const t=new f(ks);throw t.reason=e,t}function Ws(e,t,r){return t[r]===Q?e.options[r]:t[r]}function Ls(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 Ps(e){return new o(n(e/a(1e4)-a(116444736e5)))}function Hs(e,t){return e.getUint8(t)}function Zs(e,t){return e.getUint16(t,!0)}function Bs(e,t){return e.getUint32(t,!0)}function Vs(e,t){return n(e.getBigUint64(t,!0))}function qs(e){return new m(e.buffer,e.byteOffset,e.byteLength)}const Ks="File already exists",js="Zip file comment exceeds 64KB",Ys="File entry comment exceeds 64KB",Gs="File entry name exceeds 64KB",Xs="Version exceeds 65535",Js="The strength must equal 1, 2, or 3",Qs="Extra field type exceeds 65535",$s="Extra field data exceeds 64KB",en=-2147483648,tn=2147483647,rn="Zip64 is not supported (set the 'zip64' option to 'true')",sn="Undefined uncompressed size",nn="Undefined reader",an="Zip file not empty",on=new p([7,0,2,0,65,69,3,0,0]),cn="infozip",ln="unix";let dn=0;const un=[];class fn{constructor(e,t={}){const s=(e=new br(e)).availableSize!==Q&&e.availableSize>0&&e.availableSize!==$&&e.maxSize!==Q&&e.maxSize>0&&e.maxSize!==$;r.assign(this,{writer:e,addSplitZipSignature:s,options:t,config:ae(),files:new c,filenames:new l,offset:t[ps]===Q?e.size||e.writable.size||0:t[ps],initialOffset:t[ps]===Q?0:t[ps]-(e.size||e.writable.size||0),pendingAddFileCalls:new l,bufferedWrites:0,lastFileEntry:Q})}async prependZip(e){if(this.filenames.size)throw new f(an);e=new yr(e),await Sr(e);const t=new Ts(e.readable),s=await t.getEntries();await t.close(),await Sr(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:f,zip64:w}=e;let{compressionMethod:h,rawExtraFieldZip64:m,rawExtraFieldAES:g,rawExtraFieldExtendedTimestamp:y,rawExtraFieldNTFS:b,rawExtraFieldUnix:S,rawExtraField:z}=e;const{level:x,languageEncodingFlag:E,dataDescriptor:F}=o;m=m||new p,g=g||new p,y=y||new p,b=b||new p,S=S||new p,z=z||new p,e.extraFieldAES&&(h=99);const k=Tn(m,g,y,b,S,z),R=w&&l>=C,D=w&&d>=C,A=-7&Cn(x,E,F,c,h)|x<<1,{headerArray:v,headerView:T}=_n({version:t,bitFlag:A,compressionMethod:h,uncompressedSize:l,compressedSize:d,rawLastModDate:s,rawFilename:i,zip64CompressedSize:D,zip64UncompressedSize:R,extraFieldLength:k}),{signature:_}=e;return _!==Q&&Rn(T,10,_),r.assign(e,{zip64UncompressedSize:R,zip64CompressedSize:D,zip64Offset:w&&this.offset-u>=C,zip64DiskNumberStart:w&&f>=U,rawExtraFieldZip64:m,rawExtraFieldAES:g,rawExtraFieldExtendedTimestamp:y,rawExtraFieldNTFS:b,rawExtraFieldUnix:S,rawExtraField:z,extendedTimestamp:y.length>0||b.length>0,extraFieldExtendedTimestampFlag:1+(n?2:0)+(a?4:0),headerArray:v,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;dn<c.maxWorkers?dn++:await new y(e=>un.push(e));try{if(e=e.trim(),En(n,s,jr)&&!e.endsWith(Y)&&(e+=Y),n.filenames.has(e))throw new f(Ks);return n.filenames.add(e),d=!0,l=(async(e,t,s,n)=>{const i=((e,t,r)=>{t=t.trim();let s=En(e,r,Hr),n=En(e,r,qr,s?20:768);const a=En(e,r,Yr),i=En(e,r,"uid"),o=En(e,r,"gid");let c=En(e,r,Qr),l=En(e,r,"unixExtraFieldType"),d=En(e,r,$r),u=En(e,r,es),p=En(e,r,ts);if(i!==Q&&(0>i||i>C))throw new f("Invalid uid (must be integer 0..2^32-1)");if(o!==Q&&(0>o||o>C))throw new f("Invalid gid (must be integer 0..2^32-1)");if(c!==Q&&(0>c||c>U))throw new f("Invalid UNIX mode (must be integer 0..65535)");if(l!==Q&&l!==cn&&l!==ln)throw new f("Invalid unixExtraFieldType (must be 'infozip' or 'unix')");if(l===ln&&(i!==Q&&i>U||o!==Q&&o>U))throw new f("uid/gid must be 0..65535 for unixExtraFieldType 'unix' (use 'infozip' for larger ids)");l!==Q||i===Q&&o===Q||(l=cn);let w=En(e,r,Lr),h=En(e,r,Pr);const m=w!==Q||h!==Q;if(i!==Q||o!==Q||c!==Q||l?(s=!1,n=n&U|768):m&&(s=!0,n&=N),w!==Q&&(0>w||w>N))throw new f("Invalid msdosAttributesRaw (must be integer 0..255)");if(h&&"object"!=typeof h)throw new f("Invalid msdosAttributes (must be an object with boolean flags)");if(n>U)throw new f(Xs);let g=En(e,r,Wr,0);!r[jr]&&t.endsWith(Y)&&(r[jr]=!0);const y=En(e,r,jr);let b;return y?(t.endsWith(Y)||(t+=Y),0===g&&(g=16,s||(g|=16877<<16))):s||0!==g||(g=a?493<<16:27525120),s||(b=g>>16&U,c=c===Q?b:c&U,d?c|=K:d=!!(c&K),u?c|=j:u=!!(c&j),p?c|=512:p=!!(512&c),y&&(c|=q),g=(c&U)<<16|g&N),({msdosAttributesRaw:w,msdosAttributes:h}=((e,t)=>{if(e!==Q)e&=N;else if(t!==Q){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&N}return t===Q&&(t={readOnly:!!(1&e),hidden:!!(2&e),system:!!(4&e),directory:!!(16&e),archive:!!(32&e)}),{msdosAttributesRaw:e,msdosAttributes:t}})(w,h)),m&&(g=g&C|w&N),{name:t,resolvedOptions:{versionMadeBy:n,msDosCompatible:s,externalFileAttributes:g,unixExternalUpper:b,uid:i,gid:o,unixMode:c,unixExtraFieldType:l,setuid:d,setgid:u,sticky:p,msdosAttributesRaw:w,msdosAttributes:h}}})(e,t,n);({name:t}=i);const c=((e,t,r)=>{const s=En(e,r,"encodeText",fe);let n=s(t);if(n===Q&&(n=fe(t)),Tn(n)>U)throw new f(Gs);const a=r[Rr]||"";let i=s(a);if(i===Q&&(i=fe(a)),Tn(i)>U)throw new f(Ys);const c=En(e,r,Vr,20);if(c>U)throw new f(Xs);const l=En(e,r,Cr,new o),d=En(e,r,Nr),u=En(e,r,Or),w=En(e,r,Mr,0),h=En(e,r,is);let m,g;h||(m=En(e,r,ns),g=En(e,r,as));const y=En(e,r,"encryptionStrength",3),b=En(e,r,Kr),S=En(e,r,"extendedTimestamp",!0),z=En(e,r,"keepOrder",!0),x=En(e,r,ls),E=En(e,r,us,!0),F=En(e,r,"bufferedWrite"),k=En(e,r,"createTempStream"),R=En(e,r,"dataDescriptorSignature",!0),D=En(e,r,os),A=En(e,r,"useUnicodeFileNames",!0),v=En(e,r,Gr);if(!h&&v!==Q&&0!==v&&8!==v)throw new f("Compression method not supported");let T=En(e,r,"level"),_=En(e,r,ds),C=En(e,r,"dataDescriptor");F&&C===Q&&(C=!1),(C===Q||b)&&(C=!0),T!==Q&&6!=T&&(_=!1),_||e.config.CompressionStream!==Q||e.config.CompressionStreamZlib!==Q||(T=0);const N=En(e,r,Zr);if(!b&&(m!==Q||g!==Q)&&(1>y||y>3))throw new f(Js);let O=new p;const I=r[Jr];if(I){let e=0,t=0;I.forEach(t=>e+=4+Tn(t)),O=new p(e);const r=vn(O);I.forEach((e,s)=>{if(s>U)throw new f(Qs);if(Tn(e)>U)throw new f($s);kn(r,t,s),kn(r,t+2,Tn(e)),An(O,e,t+4),t+=4+Tn(e)})}return{comment:a,resolvedOptions:{rawFilename:n,rawComment:i,version:c,lastModDate:l,lastAccessDate:d,creationDate:u,internalFileAttributes:w,passThrough:h,password:m,rawPassword:g,encryptionStrength:y,zipCrypto:b,extendedTimestamp:S,keepOrder:z,useWebWorkers:x,transferStreams:E,bufferedWrite:F,createTempStream:k,dataDescriptorSignature:R,signal:D,useUnicodeFileNames:A,compressionMethod:v,level:T,useCompressionStream:_,dataDescriptor:C,zip64:N,rawExtraField:O}}})(e,t,n),{comment:l}=c,d=n[Jr];let u;e.files.set(t,Q);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:p}=r,w=0,h=0;if(n){if(!t)throw new f(nn);if(h=s[Ar],h===Q)throw new f(sn)}const m=!0===d,g=En(e,s,Br),y=!!t&&(!!(i&&Tn(i)||o&&Tn(o))||n&&g);t||(u=0,p=0);const b=y?a?12:16+4*c:0;t&&(t=new yr(t),await Sr(t),n?(s.uncompressedSize=h,w=Fn(h)+b):t.size===Q?(l=!0,(d||d===Q)&&(d=!0,h=w=4294967296)):(s.uncompressedSize=h=t.size,w=Fn(h)+b));const S=m||h>=C,z=m||w>=C;if(S||z){if(!1===d)throw new f(rn);d=!0}return d=d||!1,{reader:t,resolvedOptions:{dataDescriptor:l,zip64:d,zip64UncompressedSize:S,zip64CompressedSize:z,uncompressedSize:h,level:u,compressionMethod:p,encrypted:y}}})(e,s,c,n);({reader:s}=o);const{diskOffset:l,diskNumber:d}=e.writer,w=(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:w,extendedTimestamp:h,passThrough:m,encrypted:g,zip64UncompressedSize:y,zip64CompressedSize:b,uncompressedSize:S}=e;let{version:z,compressionMethod:x}=e;const E=!d&&(x===Q?a===Q||a>0:0!==x);let F;const k=m||!E,R=i&&(e.bufferedWrite||!l||!y&&!b||k),D=R||i&&l&&(y||b);if(i&&(y||b)){const e=20,t=mn(e);if(t.uint16(1),t.uint16(e-4),F=t.array,R&&(t.uint64(S),k)){const e=g?o?12:16+4*w:0;t.uint64(m?0:S+e)}}else F=new p;let A,v,T,_,C;if(g&&!o){const e=mn(Tn(on)+2);e.uint16(39169),e.bytes(on),A=e.array,A[8]=w}else A=new p;if(h){const e=Sn(r);if(zn(e)){const t=9+(s?4:0)+(n?4:0),r=mn(t);_=1+(s?2:0)+(n?4:0),r.uint16(B),r.uint16(t-4),r.uint8(_),r.uint32(e),s&&r.uint32(xn(Sn(s))),n&&r.uint32(xn(Sn(n))),T=r.array}else T=new p;try{const e=bn(r),t=mn(36);t.uint16(10),t.uint16(32),t.skip(4),t.uint16(1),t.uint16(24),t.uint64(e),t.uint64(bn(s)||e),t.uint64(bn(n)||e),v=t.array}catch{v=new p}}else v=T=new p;try{const{uid:t,gid:r,unixExtraFieldType:s}=e;if(s!=cn||t===Q&&r===Q)if(s!=ln||t===Q&&r===Q)C=new p;else{const e=mn(8);e.uint16(30805),e.uint16(4),e.uint16((t===Q?0:t)&U),e.uint16((r===Q?0:r)&U),C=e.array}else{const e=hn(t),s=hn(r),n=3+e.length+s.length,a=mn(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),C=a.array}}catch{C=new p}x===Q&&(x=E?8:0),i&&(z=z>45?z:45),g&&!o&&(z=z>51?z:51,A[9]=x,x=99);const N=D?Tn(F):0,I=N+Tn(A,T,v,C,u);if(I>U)throw new f($s);const{headerArray:M,headerView:W,rawLastModDate:L}=_n({version:z,bitFlag:Cn(a,c,l,g,x),compressionMethod:x,uncompressedSize:S,lastModDate:J>r?J:r>X?X:r,rawFilename:t,zip64CompressedSize:b,zip64UncompressedSize:y,extraFieldLength:I}),P=mn(G+Tn(t)+I),H=P.array,Z=vn(H);return P.uint32(O),P.bytes(M),P.bytes(t),D&&P.bytes(F),P.bytes(A),P.bytes(T),P.bytes(v),P.bytes(C),P.bytes(u),l&&(b||Rn(Z,18,0),y||Rn(Z,22,0)),{localHeaderArray:H,localHeaderView:Z,headerArray:M,headerView:W,lastModDate:r,rawLastModDate:L,encrypted:g,compressed:E,version:z,compressionMethod:x,extraFieldExtendedTimestampFlag:_,rawExtraFieldZip64:new p,localExtraFieldZip64Length:N,rawExtraFieldExtendedTimestamp:T,rawExtraFieldNTFS:v,rawExtraFieldUnix:C,rawExtraFieldAES:A,extraFieldLength:I}})(n=r.assign({},n,i.resolvedOptions,c.resolvedOptions,o.resolvedOptions,{internalFileAttribute:c.resolvedOptions.internalFileAttributes,externalFileAttribute:i.resolvedOptions.externalFileAttributes,signature:n[Xr],offset:e.offset-l,diskNumberStart:d})),h=(({zip64:e,dataDescriptor:t,dataDescriptorSignature:r})=>{let s,n=new p,a=0,i=e?20:12;return r&&(i+=4),t&&(n=new p(i),s=vn(n),r&&(a=4,Rn(s,0,M))),{dataDescriptorArray:n,dataDescriptorView:s,dataDescriptorOffset:a}})(n),m=Tn(w.localHeaderArray,h.dataDescriptorArray);u=await(async(e,t,s,n,i)=>{const{files:o,writer:c}=e,{keepOrder:l,dataDescriptor:d,signal:u}=i,{headerInfo:w}=n,h=e.options.usdz,m=e.lastFileEntry;let g,b,S,z,x,E,k,D={},A=0;o.set(t,D),e.lastFileEntry=D;try{let b;l&&(b=m&&m.lock,D.lock=new y(e=>S=e)),i.bufferedWrite||!l||e.writerLocked||e.bufferedWrites||!d?(g=!0,e.bufferedWrites++,k=i.createTempStream?await i.createTempStream():new F(Q,Q,{highWaterMark:$}),k.size=0,await Sr(c)):(k=c,await v()),await Sr(k);const{diskOffset:_}=c;if(e.addSplitZipSignature){delete e.addSplitZipSignature;const t=new p(4);Rn(vn(t),0,I),await yn(c,t),e.offset+=4}h&&!g&&wn(n,e.offset-_);const{localHeaderArray:U}=w;g||(await b,await T());const O=c.diskNumber,M=gn(e,c);if(D.diskNumberStart=O,g||(x=!0,E=c.size,await yn(k,U)),D=await(async(e,t,{diskNumberStart:s,lock:n},i,o,c)=>{const{headerInfo:l,dataDescriptorInfo:d,metadataSize:u}=i,{headerArray:p,headerView:w,lastModDate:h,rawLastModDate:m,encrypted:g,compressed:y,version:b,compressionMethod:S,rawExtraFieldZip64:z,localExtraFieldZip64Length:x,rawExtraFieldExtendedTimestamp:E,extraFieldExtendedTimestampFlag:F,rawExtraFieldNTFS:k,rawExtraFieldUnix:R,rawExtraFieldAES:D}=l,{dataDescriptorArray:A}=d,{rawFilename:v,lastAccessDate:T,creationDate:_,password:U,rawPassword:O,level:I,zip64:M,zip64UncompressedSize:W,zip64CompressedSize:L,zipCrypto:P,dataDescriptor:H,directory:Z,executable:B,versionMadeBy:V,rawComment:q,rawExtraField:K,useWebWorkers:j,transferStreams:Y,onstart:G,onprogress:X,onend:J,signal:$,encryptionStrength:ee,extendedTimestamp:te,msDosCompatible:re,internalFileAttributes:se,externalFileAttributes:ne,uid:ae,gid:oe,unixMode:ce,setuid:le,setgid:de,sticky:ue,unixExternalUpper:fe,msdosAttributesRaw:pe,msdosAttributes:we,useCompressionStream:he,passThrough:me}=c,ge={lock:n,versionMadeBy:V,zip64:M,directory:!!Z,executable:!!B,filenameUTF8:!0,rawFilename:v,commentUTF8:!0,rawComment:q,rawExtraFieldZip64:z,localExtraFieldZip64Length:x,rawExtraFieldExtendedTimestamp:E,rawExtraFieldNTFS:k,rawExtraFieldUnix:R,rawExtraFieldAES:D,rawExtraField:K,extendedTimestamp:te,msDosCompatible:re,internalFileAttributes:se,externalFileAttributes:ne,diskNumberStart:s,uid:ae,gid:oe,unixMode:ce,setuid:le,setgid:de,sticky:ue,unixExternalUpper:fe,msdosAttributesRaw:pe,msdosAttributes:we};let{signature:ye,uncompressedSize:be}=c,Se=0;me||(be=0);const{writable:ze}=t;if(e){e.chunkSize=ie(o);const r=e.readable,s=e.size,n={options:{codecType:ft,level:I,rawPassword:O,password:U,encryptionStrength:ee,zipCrypto:g&&P,passwordVerification:g&&P&&m>>8&N,signed:!me,compressed:y&&!me,encrypted:g&&!me,useWebWorkers:j,useCompressionStream:he,transferStreams:Y},config:o,streamOptions:{signal:$,size:s,onstart:G,onprogress:X,onend:J}};try{const e=await Mt({readable:r,writable:ze},n);if(Se=e.outputSize,t.size+=Se,me||(be=e.inputSize,ye=e.signature),!L&&Se>=C||!W&&be>=C)throw new f(rn)}catch(e){throw e.outputSize!==Q&&(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:f}=n;d&&!o||e===Q||(Rn(l,10,e),c&&Rn(u,f,e)),i?c&&(Dn(u,f+4,a(t)),Dn(u,f+12,a(r))):(Rn(l,14,t),Rn(l,18,r),c&&(Rn(u,f+4,t),Rn(u,f+8,r)))})({signature:ye,compressedSize:Se,uncompressedSize:be,headerInfo:l,dataDescriptorInfo:d},c),H&&await yn(t,A),r.assign(ge,{uncompressedSize:be,compressedSize:Se,lastModDate:h,rawLastModDate:m,creationDate:_,lastAccessDate:T,encrypted:g,zipCrypto:P,size:u+Se,compressionMethod:S,version:b,headerArray:p,headerView:w,signature:ye,extraFieldExtendedTimestampFlag:F,zip64UncompressedSize:W,zip64CompressedSize:L}),ge})(s,k,D,n,e.config,i),g||(x=!1),o.set(t,D),D.filename=t,g){if(await y.all([k.writable.getWriter().close(),b]),await v(),z=!0,E=c.size,await T(),D.diskNumberStart=c.diskNumber,D.offset=gn(e,c),h){const t=n.metadataSize;wn(n,e.offset-c.diskOffset),D.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||Rn(d,14,n),l||Rn(d,18,i),c||Rn(d,22,o)),r&&s){const t=G+Tn(e)+4;Dn(d,t,a(o)),Dn(d,t+8,a(i))}})(D,w.localHeaderView,i),await yn(c,w.localHeaderArray),await(async(e,t,r)=>{const s=t.writable.getWriter();try{await e.pipeTo(new R({async write(e){var t;await s.ready,await s.write(e),t=Tn(e),A+=t}}),{preventClose:!0,preventAbort:!0,signal:r})}finally{s.releaseLock()}})(k.readable,c,u),c.size+=k.size,z=!1}else D.diskNumberStart=O,D.offset=M;return e.offset+=D.size,D}catch(r){if(z||x){if(e.hasCorruptedEntries=!0,r)try{r.corruptedEntry=!0}catch{}e.offset+=c.size-E,g&&(e.offset+=A)}throw o.delete(t),r}finally{g&&e.bufferedWrites--,S&&S(),b&&b()}async function v(){e.writerLocked=!0;const{lockWriter:t}=e;e.lockWriter=new y(t=>b=()=>{e.writerLocked=!1,t()}),await t}async function T(){Tn(w.localHeaderArray)>c.availableSize&&(c.availableSize=0,await yn(c,new p))}})(e,t,s,{headerInfo:w,dataDescriptorInfo:h,metadataSize:m},n)}catch(r){throw e.files.delete(t),r}return r.assign(u,{name:t,comment:l,extraField:d}),new ss(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=un.shift();e?e():dn--}}remove(e){const{filenames:t,files:r}=this;if("string"==typeof e&&(e=r.get(e)),e&&e.filename!==Q){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 p,r={}){const{pendingAddFileCalls:s,writer:n}=this,{writable:i}=n;if(Tn(e)>U)throw new f(js);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:w,uncompressedSize:h,compressedSize:m}=r,g=r.offset>=C,y=r.diskNumberStart>=U;let b,S;if(g||y||u||w){const e=4+(u?8:0)+(w?8:0)+(g?8:0)+(y?4:0),t=mn(e);t.uint16(1),t.uint16(e-4),u&&t.uint64(h),w&&t.uint64(m),g&&t.uint64(r.offset),y&&t.uint32(r.diskNumberStart),b=t.array}else b=new p;r.rawExtraFieldZip64=b,r.zip64Offset=g,r.zip64DiskNumberStart=y;const z=Sn(d);if(c&&zn(z)){const e=mn(9);e.uint16(B),e.uint16(5),e.uint8(l),e.uint32(z),S=e.array}else S=new p;r.rawExtraFieldExtendedTimestamp=S;const x=Tn(b,s,a,i,S,o);if(x>U)throw new f($s);t+=46+Tn(e,n)+x}return t})(e.files),{cdStartDiskNumber:i,cdStartDiskOffset:o}=await(async(e,r,s)=>{const{files:n,writer:a}=e,i=new p(r);await Sr(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:f,rawExtraFieldAES:w,rawExtraFieldExtendedTimestamp:h,rawExtraFieldNTFS:m,rawExtraFieldUnix:g,rawExtraField:y,rawComment:b,versionMadeBy:S,headerArray:z,headerView:x,zip64UncompressedSize:E,zip64CompressedSize:F,zip64DiskNumberStart:k,zip64Offset:R,internalFileAttributes:D,externalFileAttributes:A,diskNumberStart:v,uncompressedSize:T,compressedSize:_}=r,N=Tn(f,w,h,m,g,y),O=46+Tn(u,b)+N;o+O-c>a.availableSize&&(await yn(a,i.slice(c,o)),c=o,a.availableSize=0,await yn(a,new p)),0==e&&(l=a.diskNumber,d=a.diskOffset),E||Rn(x,18,T),F||Rn(x,14,_),(R||k)&&45>r.version&&kn(x,0,45);const I=mn(O);if(I.uint32(W),I.uint16(S),I.bytes(z.subarray(0,24)),I.uint16(N),I.uint16(Tn(b)),I.uint16(k?U:v),I.uint16(D),I.uint32(A),I.uint32(R?C:t),I.bytes(u),I.bytes(f),I.bytes(w),I.bytes(h),I.bytes(m),I.bytes(g),I.bytes(y),I.bytes(b),An(i,I.array,o),o+=O,s.onprogress)try{await s.onprogress(e+1,n.size,new ss(r))}catch{}}return await yn(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),w=n.diskNumber;n.availableSize<Z&&w++;let h=En(e,r,Zr);if(!(C>u&&C>c&&U>l&&U>w)){if(!1===h)throw new f(rn);h=!0}const m=Tn(t);if(m>U)throw new f(js);const g=mn(h?98:Z);Tn(g.array)+m>n.availableSize&&(n.availableSize=0,await yn(n,new p)),w=n.diskNumber,h&&(g.uint32(P),g.uint64(44),g.uint16(45),g.uint16(45),g.uint32(w),g.uint32(d),g.uint64(l),g.uint64(l),g.uint64(c),g.uint64(u),g.uint32(H),g.uint32(w),g.uint64(a(e.offset)+a(c)-a(n.diskOffset)-a(n.diskNumber?e.initialOffset:0)),g.uint32(w+1),En(e,r,"supportZip64SplitFile",!0)&&(w=U,d=U),l=U,u=C,c=C),g.uint32(L),g.uint16(w),g.uint16(d),g.uint16(l),g.uint16(l),g.uint32(c),g.uint32(u),g.uint16(m),await yn(n,g.array),m&&await yn(n,t)})(e,r,s,{cdStartDiskNumber:i,cdStartDiskOffset:o,directoryDataLength:n})})(this,e,r),En(this,r,fs)||await i.getWriter().close(),n.getData?n.getData():i}}function pn(e,t,r){e.pendingAddFileCalls.add(t),t.catch(e=>{try{r(e)}catch{}})}function wn(e,t){const{headerInfo:r}=e;let s,{localHeaderArray:n,extraFieldLength:a}=r,i=64-(t+Tn(n))%64;4>i&&(i+=64);const o=new p(i),c=vn(o);kn(c,0,6534),kn(c,2,i-4);const l=n;r.localHeaderArray=n=new p(Tn(l)+i),An(n,l),An(n,o,Tn(l)),s=vn(n),kn(s,28,a+i),r.localHeaderView=s,e.metadataSize+=i}function hn(e){if(e===Q)return new p;{const t=new p(4);vn(t).setUint32(0,e,!0);let r=4;for(;r>1&&0===t[r-1];)r--;return t.subarray(0,r)}}function mn(e){const t=new p(e),r=vn(t);let s=0;return{array:t,uint8:e=>{((e,t,r)=>{e.setUint8(t,r)})(r,s,e),s+=1},uint16:e=>{kn(r,s,e),s+=2},uint32:e=>{Rn(r,s,e),s+=4},uint64:e=>{Dn(r,s,a(e)),s+=8},bytes:e=>{An(t,e,s),s+=Tn(e)},skip:e=>s+=e}}function gn(e,t){return e.offset-t.diskOffset-(t.diskNumber?e.initialOffset:0)}async function yn(e,t){const{writable:r}=e,s=r.getWriter();try{await s.ready,e.size+=Tn(t),await s.write(t)}finally{s.releaseLock()}}function bn(e){if(e)return(a(e.getTime())+a(116444736e5))*a(1e4)}function Sn(e){return i.floor(e.getTime()/1e3)}function zn(e){return e>=en&&tn>=e}function xn(e){return i.min(tn,i.max(en,e))}function En(e,t,r,s){const n=t[r]===Q?e.options[r]:t[r];return n===Q?s:n}function Fn(e){return e+5*(i.floor(e/16383)+1)}function kn(e,t,r){e.setUint16(t,r,!0)}function Rn(e,t,r){e.setUint32(t,r,!0)}function Dn(e,t,r){e.setBigUint64(t,r,!0)}function An(e,t,r){e.set(t,r)}function vn(e){return new m(e.buffer,e.byteOffset,e.byteLength)}function Tn(...e){let t=0;return e.forEach(e=>e&&(t+=e.length)),t}function _n({version:e,bitFlag:t,compressionMethod:r,uncompressedSize:s,compressedSize:n,lastModDate:a,rawLastModDate:i,rawFilename:o,zip64CompressedSize:c,zip64UncompressedSize:l,extraFieldLength:d}){const u=mn(26),f=u.array,p=vn(f);if(u.uint16(e),u.uint16(t),u.uint16(r),i===Q){const e=new h(1),t=vn(e);kn(t,0,(a.getHours()<<6|a.getMinutes())<<5|a.getSeconds()/2),kn(t,2,(a.getFullYear()-1980<<4|a.getMonth()+1)<<5|a.getDate()),i=e[0]}return u.uint32(i),u.skip(4),c||n!==Q?u.uint32(c?C:n):u.skip(4),l||s!==Q?u.uint32(l?C:s):u.skip(4),u.uint16(Tn(o)),u.uint16(d),{headerArray:f,headerView:p,rawLastModDate:i}}function Cn(e,t,r,s,n){let a=0;return t&&(a|=V),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}try{oe({baseURI:void 0===z&&"undefined"==typeof location?require("url").pathToFileURL(__filename).href:void 0===z?location.href:_&&"SCRIPT"===_.tagName.toUpperCase()&&_.src||new u("zip-core.min.js",z.baseURI).href})}catch{}e.BlobReader=er,e.BlobWriter=tr,e.Data64URIReader=class extends Qt{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 p(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}},e.Data64URIWriter=class extends $t{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+=E(n):t.pending=n+t.pending}getData(){return this.data+E(this.pending)}},e.ERR_AMBIGUOUS_ARCHIVE=ks,e.ERR_BAD_FORMAT=ws,e.ERR_CENTRAL_DIRECTORY_NOT_FOUND=gs,e.ERR_DUPLICATED_NAME=Ks,e.ERR_ENCRYPTED=Ss,e.ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND=ms,e.ERR_EOCDR_NOT_FOUND=hs,e.ERR_EXTRAFIELD_ZIP64_NOT_FOUND=bs,e.ERR_HTTP_RANGE=Vt,e.ERR_INVALID_COMMENT=js,e.ERR_INVALID_COMPRESSED_DATA=at,e.ERR_INVALID_ENCRYPTION_STRENGTH=Js,e.ERR_INVALID_ENTRY_COMMENT=Ys,e.ERR_INVALID_ENTRY_NAME=Gs,e.ERR_INVALID_EXTRAFIELD_DATA=$s,e.ERR_INVALID_EXTRAFIELD_TYPE=Qs,e.ERR_INVALID_PASSWORD=ye,e.ERR_INVALID_SIGNATURE=be,e.ERR_INVALID_UNCOMPRESSED_SIZE=nt,e.ERR_INVALID_VERSION=Xs,e.ERR_LOCAL_FILE_HEADER_NOT_FOUND=ys,e.ERR_OVERLAPPING_ENTRY=Fs,e.ERR_SPLIT_ZIP_FILE=Es,e.ERR_UNDEFINED_READER=nn,e.ERR_UNDEFINED_UNCOMPRESSED_SIZE=sn,e.ERR_UNSUPPORTED_COMPRESSION=xs,e.ERR_UNSUPPORTED_ENCRYPTION=zs,e.ERR_UNSUPPORTED_FORMAT=rn,e.ERR_ZIP_NOT_EMPTY=an,e.HttpRangeReader=class extends hr{constructor(e,t={}){super(e,r.assign({},t,{useRangeHeader:!0}))}},e.HttpReader=hr,e.Reader=Qt,e.SplitDataReader=mr,e.SplitDataWriter=gr,e.TextReader=class extends er{constructor(e){super(new g([e],{type:"text/plain"}))}},e.TextWriter=class extends tr{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)})}}},e.Uint8ArrayReader=class extends Qt{constructor(e){super(),e=new p(e.buffer,e.byteOffset,e.byteLength),r.assign(this,{array:e,size:e.length})}readUint8Array(e,t){return this.array.slice(e,e+t)}},e.Uint8ArrayWriter=class extends $t{constructor(e){super(),this.defaultBufferSize=e||262144}init(e=0){r.assign(this,{offset:0,array:new p(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 p(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)}},e.Writer=$t,e.ZipReader=Ts,e.ZipReaderStream=class{constructor(e={}){const{readable:t,writable:r}=new F,s=new Ts(t,e).getEntriesGenerator();this.readable=new k({async pull(e){const{done:t,value:r}=await s.next();if(t)return e.close();const n={...r,readable:(()=>{const{readable:e,writable:t}=new F;if(r.getData)return(async()=>{try{await r.getData(t)}catch(e){try{await t.abort(e)}catch{}}})(),e})()};delete n.getData,e.enqueue(n)}}),this.writable=r}},e.ZipWriter=fn,e.ZipWriterStream=class{constructor(e={}){const{readable:t,writable:r}=new F;this.readable=t,this.zipWriter=new fn(r,e),this.pendingAddFileCalls=new l}transform(e){const t=this.zipWriter;let r;const{readable:s,writable:n}=new F({start(e){r=e},flush:()=>{(async()=>{try{await t.close()}catch(e){try{await t.writer.writable.abort(e)}catch{}}})()}});return pn(this,this.zipWriter.add(e,s),e=>r.error(e)),{readable:this.readable,writable:n}}writable(e){let t;const{readable:r,writable:s}=new F({start(e){t=e}});return pn(this,this.zipWriter.add(e,r),e=>t.error(e)),s}async close(e,r={}){return await y.all(t.from(this.pendingAddFileCalls)),this.zipWriter.close(e,r)}},e.configure=oe,e.getMimeType=()=>"application/octet-stream",e.terminateWorkers=async()=>{await y.allSettled(Ct.map(e=>(Zt(e),e.terminate())))}});