@zip.js/zip.js 2.8.48 → 2.8.50
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/deno.json +1 -1
- package/dist/zip-core-external.js +351 -205
- package/dist/zip-core-external.min.js +1 -1
- package/dist/zip-core.js +357 -205
- package/dist/zip-core.min.js +1 -1
- package/dist/zip-fs-core-external.js +438 -216
- package/dist/zip-fs-core-external.min.js +1 -1
- package/dist/zip-fs-core.js +213 -435
- package/dist/zip-fs-core.min.js +1 -1
- package/dist/zip-fs-external.js +438 -216
- package/dist/zip-fs-external.min.js +1 -1
- package/dist/zip-fs-native.js +447 -219
- package/dist/zip-fs-native.min.js +1 -1
- package/dist/zip-fs.js +445 -217
- package/dist/zip-fs.min.js +1 -1
- package/dist/zip-legacy.js +359 -207
- package/dist/zip-legacy.min.js +1 -1
- package/dist/zip-native.js +360 -208
- package/dist/zip-native.min.js +1 -1
- package/dist/zip-web-worker-native.js +1 -1
- package/dist/zip-web-worker.js +1 -1
- package/dist/zip.js +358 -206
- package/dist/zip.min.js +1 -1
- package/index-native.cjs +446 -218
- package/index-native.min.js +1 -1
- package/index.cjs +444 -216
- package/index.d.cts +124 -2
- package/index.d.ts +124 -2
- package/index.min.js +1 -1
- package/lib/core/codec-pool.js +1 -1
- package/lib/core/codec-registry.js +2 -2
- package/lib/core/codec-worker-web.js +436 -0
- package/lib/core/codec-worker.js +23 -388
- package/lib/core/constants.js +5 -1
- package/lib/core/io.js +2 -1
- package/lib/core/options.js +8 -0
- package/lib/core/streams/zlib-js/zlib-streams.min.js +1 -1
- package/lib/core/web-worker-base.js +10 -2
- package/lib/core/web-worker-inline-native.js +1 -1
- package/lib/core/web-worker-inline-wasm.js +1 -1
- package/lib/core/zip-fs.js +88 -12
- package/lib/core/zip-reader.js +90 -16
- package/lib/core/zip-writer.js +36 -13
- package/lib/zip-core-reader.js +6 -0
- package/lib/zip-core-writer.js +4 -0
- package/package.json +1 -1
- package/worker-message-property-names.js +1 -1
package/index-native.cjs
CHANGED
|
@@ -111,6 +111,8 @@ const INFINITY_VALUE = Infinity;
|
|
|
111
111
|
const UNDEFINED_TYPE = "undefined";
|
|
112
112
|
const FUNCTION_TYPE = "function";
|
|
113
113
|
const OBJECT_TYPE = "object";
|
|
114
|
+
const STRING_TYPE = "string";
|
|
115
|
+
const NUMBER_TYPE = "number";
|
|
114
116
|
|
|
115
117
|
const EMPTY_UINT8_ARRAY = new Uint8Array();
|
|
116
118
|
|
|
@@ -239,10 +241,10 @@ function resetConfiguration() {
|
|
|
239
241
|
Object.assign(config, DEFAULT_CONFIGURATION);
|
|
240
242
|
}
|
|
241
243
|
|
|
242
|
-
const r=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258],n=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],t=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],e=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],f=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],u=new Uint8Array(288);u.fill(8,0,144),u.fill(9,144,256),u.fill(7,256,280),u.fill(8,280,288);const i=new Uint8Array(30).fill(5);function o(r){const n=new Uint16Array(16);for(const t of r)n[t]++;n[0]=0;const t=new Uint16Array(17);for(let r=1;15>=r;r++)t[r+1]=t[r]+n[r];const e=new Uint16Array(r.length);for(let n=0;n<r.length;n++)r[n]&&(e[t[r[n]]++]=n);return {o:n,symbols:e}}const G="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",l=(x=()=>(G=>{let l=0,x=0,c=0,s=new Uint8Array(1024),p=0,m=0;for(;!m;){m=w(1);const r=w(2);if(0==r)z();else if(1==r)U(o(u),o(i));else {if(2!=r)throw Error("invalid deflate block type");U(...W());}}return s.subarray(0,p);function j(){if(l>=G.length)throw Error("unexpected end of deflate data");return G[l++]}function w(r){for(;r>c;)x|=j()<<c,c+=8;const n=x&(1<<r)-1;return x>>>=r,c-=r,n}function z(){x=0,c=0;const r=j()|j()<<8;l+=2,C(p+r);for(let n=0;r>n;n++)s[p++]=j();}function U(f,u){let i=N(f);for(;256!=i;){if(256>i)C(p+1),s[p++]=i;else {const f=i-257,o=r[f]+w(n[f]),G=N(u),l=t[G]+w(e[G]);C(p+o);const x=p-l;for(let r=0;o>r;r++)s[p++]=s[x+r];}i=N(f);}}function W(){const r=w(5)+257,n=w(5)+1,t=w(4)+4,e=new Uint8Array(19);for(let r=0;t>r;r++)e[f[r]]=w(3);const u=o(e),i=new Uint8Array(r+n);let G=0;for(;G<i.length;){const r=N(u);if(16>r)i[G++]=r;else if(16==r){const r=i[G-1];let n=w(2)+3;for(;n--;)i[G++]=r;}else G+=17==r?w(3)+3:w(7)+11;}return [o(i.subarray(0,r)),o(i.subarray(r))]}function N(r){const{o:n,symbols:t}=r;let e=0,f=0,u=0;for(let r=1;15>=r;r++){e|=w(1);const i=n[r];if(i>e-f)return t[u+(e-f)];u+=i,f=f+i<<1,e<<=1;}throw Error("invalid huffman code")}function C(r){if(s.length<r){let n=2*s.length;for(;r>n;)n*=2;const t=new Uint8Array(n);t.set(s.subarray(0,p)),s=t;}}})((r=>{const n=(r=(r+"").replace(/[^A-Za-z0-9+/=]/g,"")).length,t=[];for(let e=0;n>e;e+=4){const n=G.indexOf(r[e])<<18|G.indexOf(r[e+1])<<12|(63&G.indexOf(r[e+2]))<<6|63&G.indexOf(r[e+3]);t.push(n>>16&255),"="!==r[e+2]&&t.push(n>>8&255),"="!==r[e+3]&&t.push(255&n);}return new Uint8Array(t)})("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")),r=>r({workerURI:r=>{const n="text/javascript";let t=x();if("string"==typeof t&&(t=(new TextEncoder).encode(t)),r){const r=new Blob([t],{type:n});return URL.createObjectURL(r)}return "data:"+n+";base64,"+(r=>{let n="";const t=r.length;let e=0;for(;t>e+2;e+=3){const t=r[e]<<16|r[e+1]<<8|r[e+2];n+=G[t>>18&63]+G[t>>12&63]+G[t>>6&63]+G[63&t];}const f=t-e;if(1===f){const t=r[e]<<16;n+=G[t>>18&63]+G[t>>12&63]+"==";}else if(2===f){const t=r[e]<<16|r[e+1]<<8;n+=G[t>>18&63]+G[t>>12&63]+G[t>>6&63]+"=";}return n})(t)}}));var x;
|
|
244
|
+
const r=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258],t=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],f=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],n=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],c=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],e=new Uint8Array(288);e.fill(8,0,144),e.fill(9,144,256),e.fill(7,256,280),e.fill(8,280,288);const j$1=new Uint8Array(30).fill(5);function z$1(r){const t=new Uint16Array(16);for(const f of r)t[f]++;t[0]=0;const f=new Uint16Array(17);for(let r=1;15>=r;r++)f[r+1]=f[r]+t[r];const n=new Uint16Array(r.length);for(let t=0;t<r.length;t++)r[t]&&(n[f[r[t]]++]=t);return {j:t,symbols:n}}const W$1="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",p$1=(s=()=>(W=>{let p=0,s=0,o=0,Y=new Uint8Array(1024),l=0,B=0;for(;!B;){B=u(1);const r=u(2);if(0==r)T();else if(1==r)w(z$1(e),z$1(j$1));else {if(2!=r)throw Error("invalid deflate block type");w(...K());}}return Y.subarray(0,l);function S(){if(p>=W.length)throw Error("unexpected end of deflate data");return W[p++]}function u(r){for(;r>o;)s|=S()<<o,o+=8;const t=s&(1<<r)-1;return s>>>=r,o-=r,t}function T(){s=0,o=0;const r=S()|S()<<8;p+=2,D(l+r);for(let t=0;r>t;t++)Y[l++]=S();}function w(c,e){let j=q(c);for(;256!=j;){if(256>j)D(l+1),Y[l++]=j;else {const c=j-257,z=r[c]+u(t[c]),W=q(e),p=f[W]+u(n[W]);D(l+z);const s=l-p;for(let r=0;z>r;r++)Y[l++]=Y[s+r];}j=q(c);}}function K(){const r=u(5)+257,t=u(5)+1,f=u(4)+4,n=new Uint8Array(19);for(let r=0;f>r;r++)n[c[r]]=u(3);const e=z$1(n),j=new Uint8Array(r+t);let W=0;for(;W<j.length;){const r=q(e);if(16>r)j[W++]=r;else if(16==r){const r=j[W-1];let t=u(2)+3;for(;t--;)j[W++]=r;}else W+=17==r?u(3)+3:u(7)+11;}return [z$1(j.subarray(0,r)),z$1(j.subarray(r))]}function q(r){const{j:t,symbols:f}=r;let n=0,c=0,e=0;for(let r=1;15>=r;r++){n|=u(1);const j=t[r];if(j>n-c)return f[e+(n-c)];e+=j,c=c+j<<1,n<<=1;}throw Error("invalid huffman code")}function D(r){if(Y.length<r){let t=2*Y.length;for(;r>t;)t*=2;const f=new Uint8Array(t);f.set(Y.subarray(0,l)),Y=f;}}})((r=>{const t=(r=(r+"").replace(/[^A-Za-z0-9+/=]/g,"")).length,f=[];for(let n=0;t>n;n+=4){const t=W$1.indexOf(r[n])<<18|W$1.indexOf(r[n+1])<<12|(63&W$1.indexOf(r[n+2]))<<6|63&W$1.indexOf(r[n+3]);f.push(t>>16&255),"="!==r[n+2]&&f.push(t>>8&255),"="!==r[n+3]&&f.push(255&t);}return new Uint8Array(f)})("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")),r=>r({workerURI:r=>{const t="text/javascript";let f=s();if("string"==typeof f&&(f=(new TextEncoder).encode(f)),r){const r=new Blob([f],{type:t});return URL.createObjectURL(r)}return "data:"+t+";base64,"+(r=>{let t="";const f=r.length;let n=0;for(;f>n+2;n+=3){const f=r[n]<<16|r[n+1]<<8|r[n+2];t+=W$1[f>>18&63]+W$1[f>>12&63]+W$1[f>>6&63]+W$1[63&f];}const c=f-n;if(1===c){const f=r[n]<<16;t+=W$1[f>>18&63]+W$1[f>>12&63]+"==";}else if(2===c){const f=r[n]<<16|r[n+1]<<8;t+=W$1[f>>18&63]+W$1[f>>12&63]+W$1[f>>6&63]+"=";}return t})(f)}}));var s;
|
|
243
245
|
|
|
244
246
|
/*
|
|
245
|
-
Copyright (c)
|
|
247
|
+
Copyright (c) 2026 Gildas Lormeau. All rights reserved.
|
|
246
248
|
|
|
247
249
|
Redistribution and use in source and binary forms, with or without
|
|
248
250
|
modification, are permitted provided that the following conditions are met:
|
|
@@ -270,72 +272,19 @@ const r=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,1
|
|
|
270
272
|
*/
|
|
271
273
|
|
|
272
274
|
|
|
273
|
-
|
|
274
|
-
const
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
const RESERVED_COMPRESSION_METHODS = [
|
|
279
|
-
COMPRESSION_METHOD_STORE,
|
|
280
|
-
COMPRESSION_METHOD_DEFLATE,
|
|
281
|
-
COMPRESSION_METHOD_DEFLATE_64,
|
|
282
|
-
COMPRESSION_METHOD_AES
|
|
283
|
-
];
|
|
284
|
-
|
|
285
|
-
const registeredCodecs = new Map();
|
|
286
|
-
const codecStreams = new Map();
|
|
287
|
-
|
|
288
|
-
function registerCodec(codec = {}) {
|
|
289
|
-
const { compressionMethod, format, codecURI, CompressionStream, DecompressionStream, versionNeeded } = codec;
|
|
290
|
-
if (!Number.isInteger(compressionMethod) || compressionMethod < 0 || compressionMethod > MAX_16_BITS ||
|
|
291
|
-
typeof format != STRING_TYPE || !format.length) {
|
|
292
|
-
throw new Error(ERR_INVALID_CODEC_DEFINITION);
|
|
293
|
-
}
|
|
294
|
-
if (RESERVED_COMPRESSION_METHODS.includes(compressionMethod)) {
|
|
295
|
-
throw new Error(ERR_RESERVED_COMPRESSION_METHOD);
|
|
296
|
-
}
|
|
297
|
-
const hasStreams = typeof CompressionStream == FUNCTION_TYPE || typeof DecompressionStream == FUNCTION_TYPE;
|
|
298
|
-
if (!hasStreams && (typeof codecURI != STRING_TYPE || !codecURI.length)) {
|
|
299
|
-
throw new Error(ERR_INVALID_CODEC_DEFINITION);
|
|
300
|
-
}
|
|
301
|
-
registeredCodecs.set(compressionMethod, { compressionMethod, format, codecURI, versionNeeded });
|
|
302
|
-
if (hasStreams) {
|
|
303
|
-
setCodecStreams(format, { CompressionStream, DecompressionStream });
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
|
|
307
|
-
function unregisterCodec(compressionMethod) {
|
|
308
|
-
const codec = registeredCodecs.get(compressionMethod);
|
|
309
|
-
if (codec) {
|
|
310
|
-
registeredCodecs.delete(compressionMethod);
|
|
311
|
-
let formatUsed;
|
|
312
|
-
registeredCodecs.forEach(otherCodec => formatUsed = formatUsed || otherCodec.format == codec.format);
|
|
313
|
-
if (!formatUsed) {
|
|
314
|
-
codecStreams.delete(codec.format);
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
function getRegisteredCodec(compressionMethod) {
|
|
320
|
-
return registeredCodecs.get(compressionMethod);
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
function getCodecStreams(format) {
|
|
324
|
-
return codecStreams.get(format);
|
|
275
|
+
function concat(first, second) {
|
|
276
|
+
const result = new Uint8Array(first.length + second.length);
|
|
277
|
+
result.set(first);
|
|
278
|
+
result.set(second, first.length);
|
|
279
|
+
return result;
|
|
325
280
|
}
|
|
326
281
|
|
|
327
|
-
function
|
|
328
|
-
|
|
329
|
-
if (typeof CompressionStream != FUNCTION_TYPE && typeof DecompressionStream != FUNCTION_TYPE) {
|
|
330
|
-
throw new Error(ERR_INVALID_CODEC_MODULE);
|
|
331
|
-
}
|
|
332
|
-
codecStreams.set(format, { CompressionStream, DecompressionStream });
|
|
282
|
+
function toExactUint8Array(array) {
|
|
283
|
+
return array.byteOffset || array.byteLength != array.buffer.byteLength ? new Uint8Array(array) : array;
|
|
333
284
|
}
|
|
334
285
|
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
setCodecStreams(format, await import(/* webpackIgnore: true */ /* @vite-ignore */ codecURI));
|
|
338
|
-
}
|
|
286
|
+
function getDataView(array) {
|
|
287
|
+
return new DataView(array.buffer, array.byteOffset, array.byteLength);
|
|
339
288
|
}
|
|
340
289
|
|
|
341
290
|
/*
|
|
@@ -520,50 +469,6 @@ function encodeText(value) {
|
|
|
520
469
|
}
|
|
521
470
|
}
|
|
522
471
|
|
|
523
|
-
/*
|
|
524
|
-
Copyright (c) 2026 Gildas Lormeau. All rights reserved.
|
|
525
|
-
|
|
526
|
-
Redistribution and use in source and binary forms, with or without
|
|
527
|
-
modification, are permitted provided that the following conditions are met:
|
|
528
|
-
|
|
529
|
-
1. Redistributions of source code must retain the above copyright notice,
|
|
530
|
-
this list of conditions and the following disclaimer.
|
|
531
|
-
|
|
532
|
-
2. Redistributions in binary form must reproduce the above copyright
|
|
533
|
-
notice, this list of conditions and the following disclaimer in
|
|
534
|
-
the documentation and/or other materials provided with the distribution.
|
|
535
|
-
|
|
536
|
-
3. The names of the authors may not be used to endorse or promote products
|
|
537
|
-
derived from this software without specific prior written permission.
|
|
538
|
-
|
|
539
|
-
THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
|
|
540
|
-
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
|
541
|
-
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,
|
|
542
|
-
INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
543
|
-
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
544
|
-
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
|
|
545
|
-
OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
546
|
-
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
547
|
-
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
|
548
|
-
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
549
|
-
*/
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
function concat(first, second) {
|
|
553
|
-
const result = new Uint8Array(first.length + second.length);
|
|
554
|
-
result.set(first);
|
|
555
|
-
result.set(second, first.length);
|
|
556
|
-
return result;
|
|
557
|
-
}
|
|
558
|
-
|
|
559
|
-
function toExactUint8Array(array) {
|
|
560
|
-
return array.byteOffset || array.byteLength != array.buffer.byteLength ? new Uint8Array(array) : array;
|
|
561
|
-
}
|
|
562
|
-
|
|
563
|
-
function getDataView(array) {
|
|
564
|
-
return new DataView(array.buffer, array.byteOffset, array.byteLength);
|
|
565
|
-
}
|
|
566
|
-
|
|
567
472
|
// Derived from https://github.com/xqdoo00o/jszip/blob/master/lib/sjcl.js and https://github.com/bitwiseshiftleft/sjcl
|
|
568
473
|
|
|
569
474
|
// deno-lint-ignore-file no-this-alias
|
|
@@ -1933,6 +1838,102 @@ function toCompatibleWritable(writable) {
|
|
|
1933
1838
|
});
|
|
1934
1839
|
}
|
|
1935
1840
|
|
|
1841
|
+
/*
|
|
1842
|
+
Copyright (c) 2025 Gildas Lormeau. All rights reserved.
|
|
1843
|
+
|
|
1844
|
+
Redistribution and use in source and binary forms, with or without
|
|
1845
|
+
modification, are permitted provided that the following conditions are met:
|
|
1846
|
+
|
|
1847
|
+
1. Redistributions of source code must retain the above copyright notice,
|
|
1848
|
+
this list of conditions and the following disclaimer.
|
|
1849
|
+
|
|
1850
|
+
2. Redistributions in binary form must reproduce the above copyright
|
|
1851
|
+
notice, this list of conditions and the following disclaimer in
|
|
1852
|
+
the documentation and/or other materials provided with the distribution.
|
|
1853
|
+
|
|
1854
|
+
3. The names of the authors may not be used to endorse or promote products
|
|
1855
|
+
derived from this software without specific prior written permission.
|
|
1856
|
+
|
|
1857
|
+
THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
|
|
1858
|
+
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
|
1859
|
+
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,
|
|
1860
|
+
INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
1861
|
+
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
1862
|
+
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
|
|
1863
|
+
OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
1864
|
+
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
1865
|
+
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
|
1866
|
+
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
1867
|
+
*/
|
|
1868
|
+
|
|
1869
|
+
|
|
1870
|
+
const ERR_INVALID_CODEC_DEFINITION = "Invalid codec definition";
|
|
1871
|
+
const ERR_RESERVED_COMPRESSION_METHOD = "Reserved compression method";
|
|
1872
|
+
const ERR_INVALID_CODEC_MODULE = "Invalid codec module";
|
|
1873
|
+
|
|
1874
|
+
const RESERVED_COMPRESSION_METHODS = [
|
|
1875
|
+
COMPRESSION_METHOD_STORE,
|
|
1876
|
+
COMPRESSION_METHOD_DEFLATE,
|
|
1877
|
+
COMPRESSION_METHOD_DEFLATE_64,
|
|
1878
|
+
COMPRESSION_METHOD_AES
|
|
1879
|
+
];
|
|
1880
|
+
|
|
1881
|
+
const registeredCodecs = new Map();
|
|
1882
|
+
const codecStreams = new Map();
|
|
1883
|
+
|
|
1884
|
+
function registerCodec(codec = {}) {
|
|
1885
|
+
const { compressionMethod, format, codecURI, CompressionStream, DecompressionStream, versionNeeded } = codec;
|
|
1886
|
+
if (!Number.isInteger(compressionMethod) || compressionMethod < 0 || compressionMethod > MAX_16_BITS ||
|
|
1887
|
+
typeof format != STRING_TYPE || !format.length) {
|
|
1888
|
+
throw new Error(ERR_INVALID_CODEC_DEFINITION);
|
|
1889
|
+
}
|
|
1890
|
+
if (RESERVED_COMPRESSION_METHODS.includes(compressionMethod)) {
|
|
1891
|
+
throw new Error(ERR_RESERVED_COMPRESSION_METHOD);
|
|
1892
|
+
}
|
|
1893
|
+
const hasStreams = typeof CompressionStream == FUNCTION_TYPE || typeof DecompressionStream == FUNCTION_TYPE;
|
|
1894
|
+
if (!hasStreams && (typeof codecURI != STRING_TYPE || !codecURI.length)) {
|
|
1895
|
+
throw new Error(ERR_INVALID_CODEC_DEFINITION);
|
|
1896
|
+
}
|
|
1897
|
+
registeredCodecs.set(compressionMethod, { compressionMethod, format, codecURI, versionNeeded });
|
|
1898
|
+
if (hasStreams) {
|
|
1899
|
+
setCodecStreams(format, { CompressionStream, DecompressionStream });
|
|
1900
|
+
}
|
|
1901
|
+
}
|
|
1902
|
+
|
|
1903
|
+
function unregisterCodec(compressionMethod) {
|
|
1904
|
+
const codec = registeredCodecs.get(compressionMethod);
|
|
1905
|
+
if (codec) {
|
|
1906
|
+
registeredCodecs.delete(compressionMethod);
|
|
1907
|
+
let formatUsed;
|
|
1908
|
+
registeredCodecs.forEach(otherCodec => formatUsed = formatUsed || otherCodec.format == codec.format);
|
|
1909
|
+
if (!formatUsed) {
|
|
1910
|
+
codecStreams.delete(codec.format);
|
|
1911
|
+
}
|
|
1912
|
+
}
|
|
1913
|
+
}
|
|
1914
|
+
|
|
1915
|
+
function getRegisteredCodec(compressionMethod) {
|
|
1916
|
+
return registeredCodecs.get(compressionMethod);
|
|
1917
|
+
}
|
|
1918
|
+
|
|
1919
|
+
function getCodecStreams(format) {
|
|
1920
|
+
return codecStreams.get(format);
|
|
1921
|
+
}
|
|
1922
|
+
|
|
1923
|
+
function setCodecStreams(format, streams) {
|
|
1924
|
+
const { CompressionStream, DecompressionStream } = streams;
|
|
1925
|
+
if (typeof CompressionStream != FUNCTION_TYPE && typeof DecompressionStream != FUNCTION_TYPE) {
|
|
1926
|
+
throw new Error(ERR_INVALID_CODEC_MODULE);
|
|
1927
|
+
}
|
|
1928
|
+
codecStreams.set(format, { CompressionStream, DecompressionStream });
|
|
1929
|
+
}
|
|
1930
|
+
|
|
1931
|
+
async function ensureCodecStreams(format, codecURI) {
|
|
1932
|
+
if (!codecStreams.has(format) && codecURI) {
|
|
1933
|
+
setCodecStreams(format, await import(/* webpackIgnore: true */ /* @vite-ignore */ codecURI));
|
|
1934
|
+
}
|
|
1935
|
+
}
|
|
1936
|
+
|
|
1936
1937
|
/*
|
|
1937
1938
|
Copyright (c) 2025 Gildas Lormeau. All rights reserved.
|
|
1938
1939
|
|
|
@@ -2486,8 +2487,8 @@ class ChunkStream extends TransformStream {
|
|
|
2486
2487
|
1. Redistributions of source code must retain the above copyright notice,
|
|
2487
2488
|
this list of conditions and the following disclaimer.
|
|
2488
2489
|
|
|
2489
|
-
2. Redistributions in binary form must reproduce the above copyright
|
|
2490
|
-
notice, this list of conditions and the following disclaimer in
|
|
2490
|
+
2. Redistributions in binary form must reproduce the above copyright
|
|
2491
|
+
notice, this list of conditions and the following disclaimer in
|
|
2491
2492
|
the documentation and/or other materials provided with the distribution.
|
|
2492
2493
|
|
|
2493
2494
|
3. The names of the authors may not be used to endorse or promote products
|
|
@@ -2506,20 +2507,15 @@ class ChunkStream extends TransformStream {
|
|
|
2506
2507
|
*/
|
|
2507
2508
|
|
|
2508
2509
|
|
|
2509
|
-
const MODULE_WORKER_OPTIONS = { type: "module" };
|
|
2510
|
-
const ERROR_EVENT_TYPE = "error";
|
|
2511
|
-
const MESSAGE_ERROR_EVENT_TYPE = "messageerror";
|
|
2512
2510
|
const ERR_WORKER_STARTUP_TIMEOUT = "Worker startup timeout";
|
|
2513
2511
|
|
|
2514
|
-
let webWorkerSupported,
|
|
2515
|
-
let transferStreamsSupported = true;
|
|
2516
|
-
try {
|
|
2517
|
-
transferStreamsSupported = typeof structuredClone == FUNCTION_TYPE && structuredClone(new DOMException("", "AbortError")).code !== UNDEFINED_VALUE;
|
|
2518
|
-
} catch {
|
|
2519
|
-
// ignored
|
|
2520
|
-
}
|
|
2512
|
+
let webWorkerSupported, createWorkerFailed, webWorkerBackend;
|
|
2521
2513
|
let initModule = () => { };
|
|
2522
2514
|
|
|
2515
|
+
function setWebWorkerBackend(backend) {
|
|
2516
|
+
webWorkerBackend = backend;
|
|
2517
|
+
}
|
|
2518
|
+
|
|
2523
2519
|
async function supportsDeflate(config) {
|
|
2524
2520
|
const { CompressionStream: NativeStream, CompressionStreamFallback: FallbackStream } = config;
|
|
2525
2521
|
if (FallbackStream && !FallbackStream.requiresModule) {
|
|
@@ -2544,6 +2540,14 @@ function resetWebWorkerSupport() {
|
|
|
2544
2540
|
createWorkerFailed = false;
|
|
2545
2541
|
}
|
|
2546
2542
|
|
|
2543
|
+
function disableWebWorker(workerData) {
|
|
2544
|
+
if (workerData.createWorker) {
|
|
2545
|
+
createWorkerFailed = true;
|
|
2546
|
+
} else {
|
|
2547
|
+
webWorkerSupported = false;
|
|
2548
|
+
}
|
|
2549
|
+
}
|
|
2550
|
+
|
|
2547
2551
|
class CodecWorker {
|
|
2548
2552
|
|
|
2549
2553
|
constructor(workerData, { readable, writable }, { options, config, streamOptions, useWebWorkers, transferStreams, workerURI, createWorker }, onTaskFinished) {
|
|
@@ -2596,7 +2600,7 @@ class CodecWorker {
|
|
|
2596
2600
|
// deno-lint-ignore valid-typeof
|
|
2597
2601
|
webWorkerSupported = typeof Worker != UNDEFINED_TYPE;
|
|
2598
2602
|
}
|
|
2599
|
-
return (useWebWorkers && ((webWorkerSupported && workerURI) || createWorker) ?
|
|
2603
|
+
return (useWebWorkers && webWorkerBackend && ((webWorkerSupported && workerURI) || createWorker) ? webWorkerBackend : createWorkerInterface)(workerData, config);
|
|
2600
2604
|
}
|
|
2601
2605
|
}
|
|
2602
2606
|
|
|
@@ -2640,58 +2644,6 @@ function createWorkerInterface(workerData, config) {
|
|
|
2640
2644
|
};
|
|
2641
2645
|
}
|
|
2642
2646
|
|
|
2643
|
-
function createWebWorkerInterface(workerData, config) {
|
|
2644
|
-
const { baseURI, chunkSize, workerStartupTimeout } = config;
|
|
2645
|
-
let { wasmURI } = config;
|
|
2646
|
-
|
|
2647
|
-
if (!workerData.interface) {
|
|
2648
|
-
// deno-lint-ignore valid-typeof
|
|
2649
|
-
if (typeof wasmURI == FUNCTION_TYPE) {
|
|
2650
|
-
wasmURI = wasmURI();
|
|
2651
|
-
}
|
|
2652
|
-
let worker;
|
|
2653
|
-
try {
|
|
2654
|
-
worker = getWebWorker(workerData.workerURI, baseURI, workerData);
|
|
2655
|
-
} catch {
|
|
2656
|
-
if (workerData.createWorker) {
|
|
2657
|
-
createWorkerFailed = true;
|
|
2658
|
-
} else {
|
|
2659
|
-
webWorkerSupported = false;
|
|
2660
|
-
}
|
|
2661
|
-
return createWorkerInterface(workerData, config);
|
|
2662
|
-
}
|
|
2663
|
-
Object.assign(workerData, {
|
|
2664
|
-
worker,
|
|
2665
|
-
workerAlive: false,
|
|
2666
|
-
terminated: false,
|
|
2667
|
-
interface: {
|
|
2668
|
-
run: async () => {
|
|
2669
|
-
try {
|
|
2670
|
-
return await runWebWorker(workerData, { chunkSize, wasmURI, baseURI, workerStartupTimeout });
|
|
2671
|
-
} catch (error) {
|
|
2672
|
-
if (error && error.workerStartupFailed) {
|
|
2673
|
-
if (workerData.createWorker) {
|
|
2674
|
-
createWorkerFailed = true;
|
|
2675
|
-
} else {
|
|
2676
|
-
webWorkerSupported = false;
|
|
2677
|
-
}
|
|
2678
|
-
const { reader } = workerData;
|
|
2679
|
-
if (reader) {
|
|
2680
|
-
reader.releaseLock();
|
|
2681
|
-
}
|
|
2682
|
-
workerData.reader = null;
|
|
2683
|
-
workerData.writer = null;
|
|
2684
|
-
return runWorker$1(workerData, config);
|
|
2685
|
-
}
|
|
2686
|
-
throw error;
|
|
2687
|
-
}
|
|
2688
|
-
}
|
|
2689
|
-
}
|
|
2690
|
-
});
|
|
2691
|
-
}
|
|
2692
|
-
return workerData.interface;
|
|
2693
|
-
}
|
|
2694
|
-
|
|
2695
2647
|
async function runWorker$1({ options, readable, writable, onTaskFinished }, config) {
|
|
2696
2648
|
let codecStream;
|
|
2697
2649
|
try {
|
|
@@ -2740,6 +2692,95 @@ async function runWorker$1({ options, readable, writable, onTaskFinished }, conf
|
|
|
2740
2692
|
}
|
|
2741
2693
|
}
|
|
2742
2694
|
|
|
2695
|
+
/*
|
|
2696
|
+
Copyright (c) 2025 Gildas Lormeau. All rights reserved.
|
|
2697
|
+
|
|
2698
|
+
Redistribution and use in source and binary forms, with or without
|
|
2699
|
+
modification, are permitted provided that the following conditions are met:
|
|
2700
|
+
|
|
2701
|
+
1. Redistributions of source code must retain the above copyright notice,
|
|
2702
|
+
this list of conditions and the following disclaimer.
|
|
2703
|
+
|
|
2704
|
+
2. Redistributions in binary form must reproduce the above copyright
|
|
2705
|
+
notice, this list of conditions and the following disclaimer in
|
|
2706
|
+
the documentation and/or other materials provided with the distribution.
|
|
2707
|
+
|
|
2708
|
+
3. The names of the authors may not be used to endorse or promote products
|
|
2709
|
+
derived from this software without specific prior written permission.
|
|
2710
|
+
|
|
2711
|
+
THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
|
|
2712
|
+
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
|
2713
|
+
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,
|
|
2714
|
+
INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
2715
|
+
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
2716
|
+
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
|
|
2717
|
+
OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
2718
|
+
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
2719
|
+
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
|
2720
|
+
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
2721
|
+
*/
|
|
2722
|
+
|
|
2723
|
+
|
|
2724
|
+
const MODULE_WORKER_OPTIONS = { type: "module" };
|
|
2725
|
+
const ERROR_EVENT_TYPE = "error";
|
|
2726
|
+
const MESSAGE_ERROR_EVENT_TYPE = "messageerror";
|
|
2727
|
+
|
|
2728
|
+
let webWorkerSource, webWorkerURI, webWorkerOptions;
|
|
2729
|
+
let transferStreamsSupported = true;
|
|
2730
|
+
try {
|
|
2731
|
+
transferStreamsSupported = typeof structuredClone == FUNCTION_TYPE && structuredClone(new DOMException("", "AbortError")).code !== UNDEFINED_VALUE;
|
|
2732
|
+
} catch {
|
|
2733
|
+
// ignored
|
|
2734
|
+
}
|
|
2735
|
+
|
|
2736
|
+
setWebWorkerBackend(createWebWorkerInterface);
|
|
2737
|
+
|
|
2738
|
+
function createWebWorkerInterface(workerData, config) {
|
|
2739
|
+
const { baseURI, chunkSize, workerStartupTimeout } = config;
|
|
2740
|
+
let { wasmURI } = config;
|
|
2741
|
+
|
|
2742
|
+
if (!workerData.interface) {
|
|
2743
|
+
// deno-lint-ignore valid-typeof
|
|
2744
|
+
if (typeof wasmURI == FUNCTION_TYPE) {
|
|
2745
|
+
wasmURI = wasmURI();
|
|
2746
|
+
}
|
|
2747
|
+
let worker;
|
|
2748
|
+
try {
|
|
2749
|
+
worker = getWebWorker(workerData.workerURI, baseURI, workerData);
|
|
2750
|
+
} catch {
|
|
2751
|
+
disableWebWorker(workerData);
|
|
2752
|
+
return createWorkerInterface(workerData, config);
|
|
2753
|
+
}
|
|
2754
|
+
Object.assign(workerData, {
|
|
2755
|
+
worker,
|
|
2756
|
+
workerAlive: false,
|
|
2757
|
+
terminated: false,
|
|
2758
|
+
interface: {
|
|
2759
|
+
run: async () => {
|
|
2760
|
+
try {
|
|
2761
|
+
return await runWebWorker(workerData, { chunkSize, wasmURI, baseURI, workerStartupTimeout });
|
|
2762
|
+
} catch (error) {
|
|
2763
|
+
if (error && error.workerStartupFailed) {
|
|
2764
|
+
disableWebWorker(workerData);
|
|
2765
|
+
releaseWorkerStreams(workerData);
|
|
2766
|
+
return runWorker$1(workerData, config);
|
|
2767
|
+
}
|
|
2768
|
+
if (error && error.codecImportFailed) {
|
|
2769
|
+
if (workerData.reader) {
|
|
2770
|
+
releaseWorkerStreams(workerData);
|
|
2771
|
+
return runWorker$1(workerData, config);
|
|
2772
|
+
}
|
|
2773
|
+
workerData.onTaskFinished();
|
|
2774
|
+
}
|
|
2775
|
+
throw error;
|
|
2776
|
+
}
|
|
2777
|
+
}
|
|
2778
|
+
}
|
|
2779
|
+
});
|
|
2780
|
+
}
|
|
2781
|
+
return workerData.interface;
|
|
2782
|
+
}
|
|
2783
|
+
|
|
2743
2784
|
async function runWebWorker(workerData, config) {
|
|
2744
2785
|
let resolveResult, rejectResult;
|
|
2745
2786
|
const result = new Promise((resolve, reject) => {
|
|
@@ -2819,6 +2860,15 @@ function watchClosedStream(writableSource) {
|
|
|
2819
2860
|
return { writable, closed, abortPipe: () => abortController.abort() };
|
|
2820
2861
|
}
|
|
2821
2862
|
|
|
2863
|
+
function releaseWorkerStreams(workerData) {
|
|
2864
|
+
const { reader } = workerData;
|
|
2865
|
+
if (reader) {
|
|
2866
|
+
reader.releaseLock();
|
|
2867
|
+
}
|
|
2868
|
+
workerData.reader = null;
|
|
2869
|
+
workerData.writer = null;
|
|
2870
|
+
}
|
|
2871
|
+
|
|
2822
2872
|
function terminateWorker$1(workerData) {
|
|
2823
2873
|
const { worker } = workerData;
|
|
2824
2874
|
if (worker) {
|
|
@@ -2886,7 +2936,7 @@ function getWebWorker(url, baseURI, workerData, isModuleType, useBlobURI = true)
|
|
|
2886
2936
|
try {
|
|
2887
2937
|
worker = new Worker(resolvedURI, resolvedOptions);
|
|
2888
2938
|
} catch (error) {
|
|
2889
|
-
if (
|
|
2939
|
+
if (isModuleType) {
|
|
2890
2940
|
return getWebWorker(url, baseURI, workerData, false, useBlobURI);
|
|
2891
2941
|
} else {
|
|
2892
2942
|
throw error;
|
|
@@ -3004,12 +3054,15 @@ async function onMessage({ data }, workerData) {
|
|
|
3004
3054
|
const stale = () => workerData.generation != generation;
|
|
3005
3055
|
try {
|
|
3006
3056
|
if (error) {
|
|
3007
|
-
const { message, stack, code, name, outputSize, cause } = error;
|
|
3057
|
+
const { message, stack, code, name, outputSize, cause, codecImportFailed } = error;
|
|
3008
3058
|
const responseError = new Error(message);
|
|
3009
3059
|
Object.assign(responseError, { stack, code, name, outputSize });
|
|
3010
3060
|
if (cause) {
|
|
3011
3061
|
responseError.cause = Object.assign(new Error(cause.message), { name: cause.name });
|
|
3012
3062
|
}
|
|
3063
|
+
if (codecImportFailed) {
|
|
3064
|
+
responseError.codecImportFailed = true;
|
|
3065
|
+
}
|
|
3013
3066
|
close(responseError);
|
|
3014
3067
|
} else {
|
|
3015
3068
|
if (type == MESSAGE_PULL) {
|
|
@@ -3048,7 +3101,9 @@ async function onMessage({ data }, workerData) {
|
|
|
3048
3101
|
if (writer) {
|
|
3049
3102
|
writer.releaseLock();
|
|
3050
3103
|
}
|
|
3051
|
-
|
|
3104
|
+
if (!(error && error.codecImportFailed)) {
|
|
3105
|
+
onTaskFinished();
|
|
3106
|
+
}
|
|
3052
3107
|
}
|
|
3053
3108
|
}
|
|
3054
3109
|
|
|
@@ -3098,7 +3153,7 @@ async function runWorker(stream, workerOptions) {
|
|
|
3098
3153
|
}
|
|
3099
3154
|
await ensureCodecStreams(format, options.codecURI);
|
|
3100
3155
|
}
|
|
3101
|
-
workerOptions.transferStreams = transferStreams || (transferStreams === UNDEFINED_VALUE && config.transferStreams);
|
|
3156
|
+
workerOptions.transferStreams = !format && (transferStreams || (transferStreams === UNDEFINED_VALUE && config.transferStreams));
|
|
3102
3157
|
const streamCopy = !compressed && !checkCrc32 && !computeCrc32 && !encrypted;
|
|
3103
3158
|
const workerSupported = format === UNDEFINED_VALUE || Boolean(options.codecURI);
|
|
3104
3159
|
workerOptions.useWebWorkers = !streamCopy && workerSupported && (useWebWorkers || (useWebWorkers === UNDEFINED_VALUE && config.useWebWorkers));
|
|
@@ -3602,7 +3657,7 @@ async function initHttpReader(httpReader, sendRequest, getRequestData) {
|
|
|
3602
3657
|
forceRangeRequests,
|
|
3603
3658
|
combineSizeEocd
|
|
3604
3659
|
} = httpReader;
|
|
3605
|
-
if (isHttpFamily(url) && (useRangeHeader || forceRangeRequests) && (typeof preventHeadRequest ==
|
|
3660
|
+
if (isHttpFamily(url) && (useRangeHeader || forceRangeRequests) && (typeof preventHeadRequest == UNDEFINED_TYPE || preventHeadRequest)) {
|
|
3606
3661
|
const response = await sendRequest(HTTP_METHOD_GET, httpReader, getRangeHeaders(httpReader, combineSizeEocd ? -END_OF_CENTRAL_DIR_LENGTH : undefined));
|
|
3607
3662
|
const acceptRanges = response.headers.get(HTTP_HEADER_ACCEPT_RANGES);
|
|
3608
3663
|
if (!forceRangeRequests && (!acceptRanges || acceptRanges.toLowerCase() != HTTP_RANGE_UNIT)) {
|
|
@@ -4455,9 +4510,13 @@ const OPTION_USDZ = "usdz";
|
|
|
4455
4510
|
const OPTION_UNIX_EXTRA_FIELD_TYPE = "unixExtraFieldType";
|
|
4456
4511
|
const OPTION_LOCAL_EXTRA_FIELD = "localExtraField";
|
|
4457
4512
|
const OPTION_STRICTNESS = "strictness";
|
|
4513
|
+
const OPTION_FILENAME_VALIDATION = "filenameValidation";
|
|
4514
|
+
const OPTION_NORMALIZE_FILENAME = "normalizeFilename";
|
|
4458
4515
|
const OPTION_MAX_APPENDED_DATA_SIZE = "maxAppendedDataSize";
|
|
4459
4516
|
const OPTION_DECRYPT_CENTRAL_DIRECTORY = "decryptCentralDirectory";
|
|
4460
4517
|
const OPTION_SIGN_CENTRAL_DIRECTORY = "signCentralDirectory";
|
|
4518
|
+
const TEXT_TYPE_FILENAME = "filename";
|
|
4519
|
+
const TEXT_TYPE_COMMENT = "comment";
|
|
4461
4520
|
const STRICTNESS_STRICT = "strict";
|
|
4462
4521
|
const STRICTNESS_BALANCED = "balanced";
|
|
4463
4522
|
const STRICTNESS_TOLERANT = "tolerant";
|
|
@@ -4504,6 +4563,11 @@ const ERR_SPLIT_ZIP_FILE = "Split zip file";
|
|
|
4504
4563
|
const ERR_OVERLAPPING_ENTRY = "Overlapping entry found";
|
|
4505
4564
|
const ERR_AMBIGUOUS_ARCHIVE = "Ambiguous archive";
|
|
4506
4565
|
const ERR_ENCRYPTED_CENTRAL_DIRECTORY = "Encrypted central directory is not supported";
|
|
4566
|
+
const ERR_UNSAFE_FILENAME = "Unsafe filename";
|
|
4567
|
+
const ERR_INVALID_STRICTNESS = "Invalid strictness (must be 'strict', 'balanced' or 'tolerant')";
|
|
4568
|
+
const ERR_INVALID_FILENAME_VALIDATION = "Invalid filenameValidation (must be 'strict', 'balanced' or 'tolerant')";
|
|
4569
|
+
const ERR_INVALID_MAX_APPENDED_DATA_SIZE = "Invalid maxAppendedDataSize (must be a number greater than or equal to 0)";
|
|
4570
|
+
const DRIVE_LETTER_REGEXP = /^[a-zA-Z]:/;
|
|
4507
4571
|
const CHARSET_UTF8 = "utf-8";
|
|
4508
4572
|
const PROPERTY_NAME_UTF8_SUFFIX = "UTF8";
|
|
4509
4573
|
const CHARSET_CP437 = "cp437";
|
|
@@ -4525,6 +4589,10 @@ const ZIP64_EXTRACTION = {
|
|
|
4525
4589
|
bytes: 8
|
|
4526
4590
|
}
|
|
4527
4591
|
};
|
|
4592
|
+
const MAX_END_OF_CENTRAL_DIR_PROBES = 64;
|
|
4593
|
+
const CENTRAL_DIRECTORY_UNREACHABLE = 0;
|
|
4594
|
+
const CENTRAL_DIRECTORY_PLAUSIBLE = 1;
|
|
4595
|
+
const CENTRAL_DIRECTORY_REACHABLE = 2;
|
|
4528
4596
|
|
|
4529
4597
|
class ZipReader {
|
|
4530
4598
|
|
|
@@ -4553,6 +4621,8 @@ class ZipReader {
|
|
|
4553
4621
|
const checkAmbiguity = strictness == STRICTNESS_STRICT;
|
|
4554
4622
|
const rejectAmbiguousEndOfDirectory = strictness != STRICTNESS_TOLERANT;
|
|
4555
4623
|
const maxAppendedDataSize = getMaxAppendedDataSize(getOptionValue$1(zipReader, options, OPTION_MAX_APPENDED_DATA_SIZE), strictness);
|
|
4624
|
+
const filenameValidation = getFilenameValidation(getOptionValue$1(zipReader, options, OPTION_FILENAME_VALIDATION), strictness);
|
|
4625
|
+
const normalizeFilename = getOptionValue$1(zipReader, options, OPTION_NORMALIZE_FILENAME);
|
|
4556
4626
|
const { endOfDirectoryInfo, endOfDirectoryReachingEndCount } = await findEndOfCentralDirectory(reader, rejectAmbiguousEndOfDirectory, maxAppendedDataSize);
|
|
4557
4627
|
if (!endOfDirectoryInfo) {
|
|
4558
4628
|
const signatureArray = await readUint8Array(reader, 0, 4);
|
|
@@ -4746,11 +4816,22 @@ class ZipReader {
|
|
|
4746
4816
|
const decode = getOptionValue$1(zipReader, options, OPTION_DECODE_TEXT) || decodeText;
|
|
4747
4817
|
const rawFilenameEncoding = filenameUTF8 ? CHARSET_UTF8 : filenameEncoding || CHARSET_CP437;
|
|
4748
4818
|
const rawCommentEncoding = commentUTF8 ? CHARSET_UTF8 : commentEncoding || CHARSET_CP437;
|
|
4749
|
-
let filename = decode(rawFilename, rawFilenameEncoding);
|
|
4819
|
+
let filename = decode(rawFilename, rawFilenameEncoding, TEXT_TYPE_FILENAME);
|
|
4750
4820
|
if (filename === UNDEFINED_VALUE) {
|
|
4751
4821
|
filename = decodeText(rawFilename, rawFilenameEncoding);
|
|
4752
4822
|
}
|
|
4753
|
-
|
|
4823
|
+
if (normalizeFilename) {
|
|
4824
|
+
const normalizedFilename = normalizeFilename(filename);
|
|
4825
|
+
if (normalizedFilename !== UNDEFINED_VALUE) {
|
|
4826
|
+
filename = normalizedFilename;
|
|
4827
|
+
}
|
|
4828
|
+
}
|
|
4829
|
+
if (isUnsafeFilename(filename, filenameValidation)) {
|
|
4830
|
+
const error = new Error(ERR_UNSAFE_FILENAME);
|
|
4831
|
+
error.filename = filename;
|
|
4832
|
+
throw error;
|
|
4833
|
+
}
|
|
4834
|
+
let comment = decode(rawComment, rawCommentEncoding, TEXT_TYPE_COMMENT);
|
|
4754
4835
|
if (comment === UNDEFINED_VALUE) {
|
|
4755
4836
|
comment = decodeText(rawComment, rawCommentEncoding);
|
|
4756
4837
|
}
|
|
@@ -4811,10 +4892,10 @@ class ZipReader {
|
|
|
4811
4892
|
entry.getData = (writer, options) => fileEntry.getData(writer, entry, zipReader.readRanges, options);
|
|
4812
4893
|
entry.arrayBuffer = async options => {
|
|
4813
4894
|
const writer = new TransformStream();
|
|
4814
|
-
const
|
|
4815
|
-
|
|
4816
|
-
|
|
4817
|
-
return
|
|
4895
|
+
const arrayBufferPromise = streamToBlob(writer.readable).then(blob => blob.arrayBuffer());
|
|
4896
|
+
arrayBufferPromise.catch(() => { });
|
|
4897
|
+
await fileEntry.getData(writer, entry, zipReader.readRanges, options);
|
|
4898
|
+
return arrayBufferPromise;
|
|
4818
4899
|
};
|
|
4819
4900
|
offset = endOffset;
|
|
4820
4901
|
const { onprogress } = options;
|
|
@@ -5065,7 +5146,7 @@ let ZipEntry$1 = class ZipEntry {
|
|
|
5065
5146
|
readRanges
|
|
5066
5147
|
});
|
|
5067
5148
|
}
|
|
5068
|
-
let writable;
|
|
5149
|
+
let writable, abortError;
|
|
5069
5150
|
try {
|
|
5070
5151
|
if (!checkOverlappingEntryOnly) {
|
|
5071
5152
|
if (checkPasswordOnly) {
|
|
@@ -5085,12 +5166,22 @@ let ZipEntry$1 = class ZipEntry {
|
|
|
5085
5166
|
writer.size += error.outputSize;
|
|
5086
5167
|
}
|
|
5087
5168
|
if (!checkPasswordOnly || error.message != ERR_ABORT_CHECK_PASSWORD) {
|
|
5169
|
+
abortError = error;
|
|
5088
5170
|
throw error;
|
|
5089
5171
|
}
|
|
5090
5172
|
} finally {
|
|
5091
5173
|
const preventClose = getOptionValue$1(zipEntry, options, OPTION_PREVENT_CLOSE);
|
|
5092
5174
|
if (!preventClose && writable && !writable.locked) {
|
|
5093
|
-
|
|
5175
|
+
const writableWriter = writable.getWriter();
|
|
5176
|
+
if (abortError) {
|
|
5177
|
+
try {
|
|
5178
|
+
await writableWriter.abort(abortError);
|
|
5179
|
+
} catch {
|
|
5180
|
+
// the error being propagated is more relevant; ignored
|
|
5181
|
+
}
|
|
5182
|
+
} else {
|
|
5183
|
+
await writableWriter.close();
|
|
5184
|
+
}
|
|
5094
5185
|
}
|
|
5095
5186
|
}
|
|
5096
5187
|
return checkPasswordOnly || checkOverlappingEntryOnly ? UNDEFINED_VALUE : writer.getData ? writer.getData() : writable;
|
|
@@ -5470,16 +5561,51 @@ function getDiskOffset$1(reader, diskNumber) {
|
|
|
5470
5561
|
return reader.getDiskOffset ? reader.getDiskOffset(diskNumber) : 0;
|
|
5471
5562
|
}
|
|
5472
5563
|
|
|
5564
|
+
function isStrictnessValue(value) {
|
|
5565
|
+
return value === STRICTNESS_STRICT || value === STRICTNESS_BALANCED || value === STRICTNESS_TOLERANT;
|
|
5566
|
+
}
|
|
5567
|
+
|
|
5473
5568
|
function getStrictness(strictness, checkAmbiguity) {
|
|
5474
5569
|
if (strictness === UNDEFINED_VALUE) {
|
|
5475
5570
|
return checkAmbiguity ? STRICTNESS_STRICT : STRICTNESS_BALANCED;
|
|
5476
5571
|
}
|
|
5572
|
+
if (!isStrictnessValue(strictness)) {
|
|
5573
|
+
throw new Error(ERR_INVALID_STRICTNESS);
|
|
5574
|
+
}
|
|
5477
5575
|
return strictness;
|
|
5478
5576
|
}
|
|
5479
5577
|
|
|
5578
|
+
function getFilenameValidation(filenameValidation, strictness) {
|
|
5579
|
+
if (filenameValidation === UNDEFINED_VALUE) {
|
|
5580
|
+
return strictness;
|
|
5581
|
+
}
|
|
5582
|
+
if (!isStrictnessValue(filenameValidation)) {
|
|
5583
|
+
throw new Error(ERR_INVALID_FILENAME_VALIDATION);
|
|
5584
|
+
}
|
|
5585
|
+
return filenameValidation;
|
|
5586
|
+
}
|
|
5587
|
+
|
|
5588
|
+
function isUnsafeFilename(filename, filenameValidation) {
|
|
5589
|
+
if (filenameValidation == STRICTNESS_TOLERANT) {
|
|
5590
|
+
return false;
|
|
5591
|
+
}
|
|
5592
|
+
const pathParts = filename.split("/");
|
|
5593
|
+
if (pathParts.length > 1 && pathParts[pathParts.length - 1] === "") {
|
|
5594
|
+
pathParts.pop();
|
|
5595
|
+
}
|
|
5596
|
+
if (pathParts.includes("..") || filename.startsWith("/") || filename.startsWith("\\\\") || DRIVE_LETTER_REGEXP.test(filename)) {
|
|
5597
|
+
return true;
|
|
5598
|
+
}
|
|
5599
|
+
return filenameValidation == STRICTNESS_STRICT && (pathParts.includes(".") || pathParts.includes(""));
|
|
5600
|
+
}
|
|
5601
|
+
|
|
5480
5602
|
function getMaxAppendedDataSize(maxAppendedDataSize, strictness) {
|
|
5481
5603
|
if (maxAppendedDataSize !== UNDEFINED_VALUE) {
|
|
5482
|
-
|
|
5604
|
+
const size = toNumber$1(maxAppendedDataSize);
|
|
5605
|
+
if (typeof size != NUMBER_TYPE || Number.isNaN(size) || size < 0) {
|
|
5606
|
+
throw new Error(ERR_INVALID_MAX_APPENDED_DATA_SIZE);
|
|
5607
|
+
}
|
|
5608
|
+
return size;
|
|
5483
5609
|
}
|
|
5484
5610
|
if (strictness == STRICTNESS_STRICT) {
|
|
5485
5611
|
return 0;
|
|
@@ -5490,12 +5616,6 @@ function getMaxAppendedDataSize(maxAppendedDataSize, strictness) {
|
|
|
5490
5616
|
return MAX_16_BITS;
|
|
5491
5617
|
}
|
|
5492
5618
|
|
|
5493
|
-
const MAX_END_OF_CENTRAL_DIR_PROBES = 64;
|
|
5494
|
-
|
|
5495
|
-
const CENTRAL_DIRECTORY_UNREACHABLE = 0;
|
|
5496
|
-
const CENTRAL_DIRECTORY_PLAUSIBLE = 1;
|
|
5497
|
-
const CENTRAL_DIRECTORY_REACHABLE = 2;
|
|
5498
|
-
|
|
5499
5619
|
async function findEndOfCentralDirectory(reader, rejectAmbiguous, maxAppendedDataSize) {
|
|
5500
5620
|
const { size } = reader;
|
|
5501
5621
|
const anchoredLength = Math.min(size, END_OF_CENTRAL_DIR_LENGTH + MAX_16_BITS);
|
|
@@ -5631,6 +5751,10 @@ function getOptionValue$1(zipReader, options, name) {
|
|
|
5631
5751
|
return options[name] === UNDEFINED_VALUE ? zipReader.options[name] : options[name];
|
|
5632
5752
|
}
|
|
5633
5753
|
|
|
5754
|
+
function toNumber$1(value) {
|
|
5755
|
+
return typeof value == STRING_TYPE && value.trim() ? Number(value) : value;
|
|
5756
|
+
}
|
|
5757
|
+
|
|
5634
5758
|
function getDate(timeRaw) {
|
|
5635
5759
|
const date = (timeRaw & 0xffff0000) >> 16, time = timeRaw & MAX_16_BITS;
|
|
5636
5760
|
return new Date(1980 + ((date & 0xFE00) >> 9), ((date & 0x01E0) >> 5) - 1, date & 0x001F, (time & 0xF800) >> 11, (time & 0x07E0) >> 5, (time & 0x001F) * 2, 0);
|
|
@@ -5669,12 +5793,16 @@ var zipReader = /*#__PURE__*/Object.freeze({
|
|
|
5669
5793
|
ERR_INVALID_AUTHENTICATION_CODE: ERR_INVALID_AUTHENTICATION_CODE,
|
|
5670
5794
|
ERR_INVALID_COMPRESSED_DATA: ERR_INVALID_COMPRESSED_DATA,
|
|
5671
5795
|
ERR_INVALID_CRC32: ERR_INVALID_CRC32,
|
|
5796
|
+
ERR_INVALID_FILENAME_VALIDATION: ERR_INVALID_FILENAME_VALIDATION,
|
|
5797
|
+
ERR_INVALID_MAX_APPENDED_DATA_SIZE: ERR_INVALID_MAX_APPENDED_DATA_SIZE,
|
|
5672
5798
|
ERR_INVALID_PASSWORD: ERR_INVALID_PASSWORD,
|
|
5673
5799
|
ERR_INVALID_SIGNATURE: ERR_INVALID_SIGNATURE,
|
|
5800
|
+
ERR_INVALID_STRICTNESS: ERR_INVALID_STRICTNESS,
|
|
5674
5801
|
ERR_INVALID_UNCOMPRESSED_SIZE: ERR_INVALID_UNCOMPRESSED_SIZE,
|
|
5675
5802
|
ERR_LOCAL_FILE_HEADER_NOT_FOUND: ERR_LOCAL_FILE_HEADER_NOT_FOUND,
|
|
5676
5803
|
ERR_OVERLAPPING_ENTRY: ERR_OVERLAPPING_ENTRY,
|
|
5677
5804
|
ERR_SPLIT_ZIP_FILE: ERR_SPLIT_ZIP_FILE,
|
|
5805
|
+
ERR_UNSAFE_FILENAME: ERR_UNSAFE_FILENAME,
|
|
5678
5806
|
ERR_UNSUPPORTED_COMPRESSION: ERR_UNSUPPORTED_COMPRESSION$1,
|
|
5679
5807
|
ERR_UNSUPPORTED_ENCRYPTION: ERR_UNSUPPORTED_ENCRYPTION,
|
|
5680
5808
|
ERR_WORKER_STARTUP_TIMEOUT: ERR_WORKER_STARTUP_TIMEOUT,
|
|
@@ -5736,6 +5864,8 @@ const ERR_INVALID_UNIX_EXTRA_FIELD_TYPE = "Invalid unixExtraFieldType (must be '
|
|
|
5736
5864
|
const ERR_INVALID_UNIX_ID_SIZE = "uid/gid must be 0..65535 for unixExtraFieldType 'unix' (use 'infozip' for larger ids)";
|
|
5737
5865
|
const ERR_INVALID_MSDOS_ATTRIBUTES = "Invalid msdosAttributesRaw (must be integer 0..255)";
|
|
5738
5866
|
const ERR_INVALID_MSDOS_DATA = "Invalid msdosAttributes (must be an object with boolean flags)";
|
|
5867
|
+
const ERR_INVALID_LEVEL = "Invalid level (must be integer 0..9)";
|
|
5868
|
+
const ERR_INVALID_PASSWORD_TYPE = "Invalid password (password must be a string, rawPassword must be a Uint8Array)";
|
|
5739
5869
|
const ERR_INVALID_SIGNATURE_DATA = "Signature data exceeds 64KB";
|
|
5740
5870
|
|
|
5741
5871
|
const EXTRAFIELD_DATA_AES = new Uint8Array([0x07, 0x00, 0x02, 0x00, 0x41, 0x45, 0x03, 0x00, 0x00]);
|
|
@@ -5743,6 +5873,7 @@ const EXTRAFIELD_OFFSET_AES_VENDOR_VERSION = 4;
|
|
|
5743
5873
|
const VENDOR_VERSION_AE_1 = 1;
|
|
5744
5874
|
const INFOZIP_EXTRA_FIELD_TYPE$1 = "infozip";
|
|
5745
5875
|
const UNIX_EXTRA_FIELD_TYPE = "unix";
|
|
5876
|
+
const MAX_LEVEL = 9;
|
|
5746
5877
|
|
|
5747
5878
|
let workers = 0;
|
|
5748
5879
|
const pendingEntries = [];
|
|
@@ -5905,7 +6036,8 @@ class ZipWriter {
|
|
|
5905
6036
|
|
|
5906
6037
|
remove(entry) {
|
|
5907
6038
|
const { filenames, files } = this;
|
|
5908
|
-
|
|
6039
|
+
// deno-lint-ignore valid-typeof
|
|
6040
|
+
if (typeof entry == STRING_TYPE) {
|
|
5909
6041
|
entry = files.get(entry);
|
|
5910
6042
|
}
|
|
5911
6043
|
if (entry && entry.filename !== UNDEFINED_VALUE) {
|
|
@@ -6043,20 +6175,20 @@ function resolveAttributes(zipWriter, name, options) {
|
|
|
6043
6175
|
let msDosCompatible = getOptionValue(zipWriter, options, PROPERTY_NAME_MS_DOS_COMPATIBLE);
|
|
6044
6176
|
let versionMadeBy = getOptionValue(zipWriter, options, PROPERTY_NAME_VERSION_MADE_BY, msDosCompatible ? 20 : 768);
|
|
6045
6177
|
const executable = getOptionValue(zipWriter, options, PROPERTY_NAME_EXECUTABLE);
|
|
6046
|
-
const uid =
|
|
6047
|
-
const gid =
|
|
6048
|
-
let unixMode =
|
|
6178
|
+
const uid = getNumberOptionValue(zipWriter, options, PROPERTY_NAME_UID);
|
|
6179
|
+
const gid = getNumberOptionValue(zipWriter, options, PROPERTY_NAME_GID);
|
|
6180
|
+
let unixMode = getNumberOptionValue(zipWriter, options, PROPERTY_NAME_UNIX_MODE);
|
|
6049
6181
|
let unixExtraFieldType = getOptionValue(zipWriter, options, OPTION_UNIX_EXTRA_FIELD_TYPE);
|
|
6050
6182
|
let setuid = getOptionValue(zipWriter, options, PROPERTY_NAME_SETUID);
|
|
6051
6183
|
let setgid = getOptionValue(zipWriter, options, PROPERTY_NAME_SETGID);
|
|
6052
6184
|
let sticky = getOptionValue(zipWriter, options, PROPERTY_NAME_STICKY);
|
|
6053
|
-
if (uid !== UNDEFINED_VALUE && (uid < 0 || uid > MAX_32_BITS)) {
|
|
6185
|
+
if (uid !== UNDEFINED_VALUE && (!Number.isInteger(uid) || uid < 0 || uid > MAX_32_BITS)) {
|
|
6054
6186
|
throw new Error(ERR_INVALID_UID);
|
|
6055
6187
|
}
|
|
6056
|
-
if (gid !== UNDEFINED_VALUE && (gid < 0 || gid > MAX_32_BITS)) {
|
|
6188
|
+
if (gid !== UNDEFINED_VALUE && (!Number.isInteger(gid) || gid < 0 || gid > MAX_32_BITS)) {
|
|
6057
6189
|
throw new Error(ERR_INVALID_GID);
|
|
6058
6190
|
}
|
|
6059
|
-
if (unixMode !== UNDEFINED_VALUE && (unixMode < 0 || unixMode > MAX_16_BITS)) {
|
|
6191
|
+
if (unixMode !== UNDEFINED_VALUE && (!Number.isInteger(unixMode) || unixMode < 0 || unixMode > MAX_16_BITS)) {
|
|
6060
6192
|
throw new Error(ERR_INVALID_UNIX_MODE);
|
|
6061
6193
|
}
|
|
6062
6194
|
if (unixExtraFieldType !== UNDEFINED_VALUE && unixExtraFieldType !== INFOZIP_EXTRA_FIELD_TYPE$1 && unixExtraFieldType !== UNIX_EXTRA_FIELD_TYPE) {
|
|
@@ -6168,7 +6300,7 @@ function resolveAttributes(zipWriter, name, options) {
|
|
|
6168
6300
|
|
|
6169
6301
|
function resolveMetadata(zipWriter, name, options) {
|
|
6170
6302
|
const encode = getOptionValue(zipWriter, options, OPTION_ENCODE_TEXT, encodeText);
|
|
6171
|
-
let rawFilename = encode(name);
|
|
6303
|
+
let rawFilename = encode(name, TEXT_TYPE_FILENAME);
|
|
6172
6304
|
if (rawFilename === UNDEFINED_VALUE) {
|
|
6173
6305
|
rawFilename = encodeText(name);
|
|
6174
6306
|
}
|
|
@@ -6176,7 +6308,7 @@ function resolveMetadata(zipWriter, name, options) {
|
|
|
6176
6308
|
throw new Error(ERR_INVALID_ENTRY_NAME);
|
|
6177
6309
|
}
|
|
6178
6310
|
const comment = options[PROPERTY_NAME_COMMENT] || "";
|
|
6179
|
-
let rawComment = encode(comment);
|
|
6311
|
+
let rawComment = encode(comment, TEXT_TYPE_COMMENT);
|
|
6180
6312
|
if (rawComment === UNDEFINED_VALUE) {
|
|
6181
6313
|
rawComment = encodeText(comment);
|
|
6182
6314
|
}
|
|
@@ -6196,8 +6328,11 @@ function resolveMetadata(zipWriter, name, options) {
|
|
|
6196
6328
|
if (!passThrough) {
|
|
6197
6329
|
password = getOptionValue(zipWriter, options, OPTION_PASSWORD);
|
|
6198
6330
|
rawPassword = getOptionValue(zipWriter, options, OPTION_RAW_PASSWORD);
|
|
6331
|
+
if ((password && typeof password != STRING_TYPE) || (rawPassword && !(rawPassword instanceof Uint8Array))) {
|
|
6332
|
+
throw new Error(ERR_INVALID_PASSWORD_TYPE);
|
|
6333
|
+
}
|
|
6199
6334
|
}
|
|
6200
|
-
const encryptionStrength =
|
|
6335
|
+
const encryptionStrength = getNumberOptionValue(zipWriter, options, OPTION_ENCRYPTION_STRENGTH, 3);
|
|
6201
6336
|
const zipCrypto = getOptionValue(zipWriter, options, PROPERTY_NAME_ZIPCRYPTO);
|
|
6202
6337
|
const extendedTimestamp = getOptionValue(zipWriter, options, OPTION_EXTENDED_TIMESTAMP, true);
|
|
6203
6338
|
const ntfsTimestamp = getOptionValue(zipWriter, options, OPTION_NTFS_TIMESTAMP);
|
|
@@ -6215,7 +6350,10 @@ function resolveMetadata(zipWriter, name, options) {
|
|
|
6215
6350
|
compressionMethod !== COMPRESSION_METHOD_STORE && compressionMethod !== COMPRESSION_METHOD_DEFLATE && !registeredCodec) {
|
|
6216
6351
|
throw new Error(ERR_UNSUPPORTED_COMPRESSION);
|
|
6217
6352
|
}
|
|
6218
|
-
let level =
|
|
6353
|
+
let level = getNumberOptionValue(zipWriter, options, OPTION_LEVEL);
|
|
6354
|
+
if (level !== UNDEFINED_VALUE && (!Number.isInteger(level) || level < 0 || level > MAX_LEVEL)) {
|
|
6355
|
+
throw new Error(ERR_INVALID_LEVEL);
|
|
6356
|
+
}
|
|
6219
6357
|
if (zipWriter.options[OPTION_USDZ]) {
|
|
6220
6358
|
if (password !== UNDEFINED_VALUE || rawPassword !== UNDEFINED_VALUE) {
|
|
6221
6359
|
throw new Error(ERR_UNSUPPORTED_ENCRYPTION_USDZ);
|
|
@@ -6236,7 +6374,7 @@ function resolveMetadata(zipWriter, name, options) {
|
|
|
6236
6374
|
useCompressionStream = false;
|
|
6237
6375
|
}
|
|
6238
6376
|
const zip64 = getOptionValue(zipWriter, options, PROPERTY_NAME_ZIP64);
|
|
6239
|
-
if (!zipCrypto && (password !== UNDEFINED_VALUE || rawPassword !== UNDEFINED_VALUE) && !(encryptionStrength >= 1 && encryptionStrength <= 3)) {
|
|
6377
|
+
if (!zipCrypto && (password !== UNDEFINED_VALUE || rawPassword !== UNDEFINED_VALUE) && !(Number.isInteger(encryptionStrength) && encryptionStrength >= 1 && encryptionStrength <= 3)) {
|
|
6240
6378
|
throw new Error(ERR_INVALID_ENCRYPTION_STRENGTH);
|
|
6241
6379
|
}
|
|
6242
6380
|
const rawExtraField = serializeExtraField(options[PROPERTY_NAME_EXTRA_FIELD]);
|
|
@@ -7430,6 +7568,14 @@ function getOptionValue(zipWriter, options, name, defaultValue) {
|
|
|
7430
7568
|
return result === UNDEFINED_VALUE ? defaultValue : result;
|
|
7431
7569
|
}
|
|
7432
7570
|
|
|
7571
|
+
function getNumberOptionValue(zipWriter, options, name, defaultValue) {
|
|
7572
|
+
return toNumber(getOptionValue(zipWriter, options, name, defaultValue));
|
|
7573
|
+
}
|
|
7574
|
+
|
|
7575
|
+
function toNumber(value) {
|
|
7576
|
+
return typeof value == STRING_TYPE && value.trim() ? Number(value) : value;
|
|
7577
|
+
}
|
|
7578
|
+
|
|
7433
7579
|
function getMaximumCompressedSize(uncompressedSize) {
|
|
7434
7580
|
return uncompressedSize + (5 * (Math.floor(uncompressedSize / 16383) + 1));
|
|
7435
7581
|
}
|
|
@@ -8013,7 +8159,7 @@ try {
|
|
|
8013
8159
|
// ignored
|
|
8014
8160
|
}
|
|
8015
8161
|
|
|
8016
|
-
var{Uint8Array:p,Uint16Array:g,Int32Array:R,TransformStream:H,Math:z,Error:L,Array:k}=globalThis,pe=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],Z=new p(0),qe=new g(0),de=[];for(let e=0;e<6;e++)de.push(e,0==e?8:4);de.push(0,1);var Se=[];for(let e=0;e<14;e++)Se.push(e,0==e?4:2);var Ee=new g([0,1,2,3,4,6,8,12,16,24,32,48,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096,6144,8192,12288,16384,24576]),ge=new g([0,1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32,40,48,56,64,80,96,112,128,160,192,224,0]);function M(e,t,n,r,i){if(0==i)return;let f=e instanceof p?e:new p(e.buffer,e.byteOffset,e.byteLength),_=n instanceof p?n.subarray(r,r+i):new p(n.buffer,n.byteOffset+r,i);f.set(_,t);}function Ve(e,t,n){0!=n&&(e instanceof p?e:new p(e.buffer,e.byteOffset,e.byteLength)).fill(0,t,t+n);}function je(){return {next_in:Z,next_in_index:0,avail_in:0,total_in:0,next_out:Z,next_out_index:0,avail_out:0,total_out:0,msg:"",t:0,i:0,_:0,l:void 0}}function Je(e,t){let n=1<<t;return {o:e,u:new p(n),h:n,v:t,k:0,m:0,p:0,T:0}}function te(e){let t=[];for(let n=0;n<e.length;n+=2){let r=e[n],i=e[n+1];for(let e=0;e<i;e++)t.push(r);}return new g(t)}var ne=class{constructor(e,t){this.M=e,this.C=t,this.Z=0;}},re=class{constructor(e,t,n,r,i){this.W=e,this.q=t,this.S=n,this.L=r,this.$=i;}};function D_(e){return Q_[e<-6||e>2?9:2-e]||""}function we(e,t){try{e.msg=D_(t);}catch(n){e.msg="zlib error "+String(t)+" ("+n+")";}return t}function $e(e,t){let n=e>>>0,r=0;for(let e=0;e<t;e++)r=r<<1|1&n,n>>>=1;return r}function T(e,t){e.D[e.A++]=t;}function Ae(e,t){T(e,255&t),T(e,t>>>8&255);}function e_(e,t,n){let r=255&n,i=65535&t,f=e.I+e.H;return e.D[f]=255&i,e.D[f+1]=i>>>8&255,e.D[f+2]=r,e.H+=3,i=i-1&65535,e.N[__[r]+ie+1].j++,e.U[y_(i)].j++,e.H==e.R}function De(e,t){let n=255&t,r=e.I+e.H;return e.D[r]=0,e.D[r+1]=0,e.D[r+2]=n,e.H+=3,e.N[n].j++,e.H==e.R}function ye(e){return e.h-ae}function y_(e){return e<256?A_[e]:A_[256+(e>>7)]}function v_(e){let t=Ce+7,n=1<<t,r=(1<<t)-1,i=z.floor((t+v-1)/v),f=1<<8+Ce;return {...Je(e,15),o:e,Y:42,P:0,B:void 0,F:32767,G:t,O:n,V:r,X:i,J:new g(32768),K:new g(n),ee:f,D:new p(32768),te:0,ne:32768,A:0,re:0,ie:0,fe:0,_e:0,le:0,oe:-2,ue:0,ae:0,ce:0,se:0,he:0,de:0,we:0,be:0,ve:0,ke:0,ge:0,me:0,pe:0,xe:0,Te:new R(2*Te+1),ye:new p(2*Te+1),ze:new g(be+1),H:0,R:0,Me:Z,I:0,Ce:0,Ze:0,We:8,qe:32768,Se:0,Le:0,$e:0,N:new k(fe).fill(0).map(()=>Q()),U:new k(2*me+1).fill(0).map(()=>Q()),De:new k(2*oe+1).fill(0).map(()=>Q()),Ae:w_(),Ie:w_(),He:w_()}}function I_(e){let t=[];for(let n=0;n<e.length;n+=2){let r=e[n],i=e[n+1],f=Q();f.Qe=r,f.je=i,t.push(f);}return t}function Q(){return {j:0,Qe:0,Ne:0,je:0}}function w_(){return new ne([],dn(null,Z,0,0,0))}function dn(e,t,n,r,i){return new re(e,t,n,r,i)}function $_(){let e=new k(288).fill(0);for(let t=0;t<=143;t++)e[t]=8;for(let t=144;t<=255;t++)e[t]=9;for(let t=256;t<=279;t++)e[t]=7;for(let t=280;t<=287;t++)e[t]=8;return e}function k_(e){let{code:t,length:n}=mn(e),r=new g(2*e.length),i=0;for(let f=0;f<e.length;f++){let e=n[f]||0,_=t[f]||0;r[i++]=e?$e(_,e):0,r[i++]=e;}return new g(r)}function et(e,t,n){let r=0;for(let n=0;n<e.length;n++){let i=t[n]?1<<t[n]:1,f=e[n]+i-1;f>r&&(r=f);}r<n&&(r=n);let i=new p(r+1);for(let n=0;n<=r;n++)for(let r=0;r<e.length;r++){let f=t[r]?1<<t[r]:1,_=e[r];if(n>=_&&n<=_+f-1){i[n]=r;break}}let f=0;for(let n=0;n<e.length-1;n++){let r=t[n]?1<<t[n]:1,i=e[n]+r-1;i>f&&(f=i);}return i[f]=e.length-1,i}function _t(e,t){let n=0;for(let r=0;r<e.length;r++){let i=t[r]?1<<t[r]:1,f=e[r]+i-1;f>n&&(n=f);}let r=new p(n+1);for(let i=0;i<=n;i++)for(let n=0;n<e.length;n++){let f=t[n]?1<<t[n]:1,_=e[n];if(i>=_&&i<=_+f-1){r[i]=n;break}}return r}function tt(e){let t=new p(512),n=e.length-1;for(let r=0;r<256;r++)t[r]=r<=n?e[r]:e[n];for(let r=256;r<=n;r++){let n=r>>7;t[256+(n>255?255:n)]=e[r];}for(let e=257;e<512;e++)0==t[e]&&(t[e]=t[e-1]);return t}function mn(e){let t=z.max(...e),n=new k(t+1).fill(0);for(let t of e)t>0&&n[t]++;let r=new k(e.length).fill(0),i=new k(t+1).fill(0),f=0;for(let e=1;e<=t;e++)f=f+n[e-1]<<1,i[e]=f;for(let t=0;t<e.length;t++){let n=e[t];0!=n&&(r[t]=i[n]++);}return {code:r,length:e}}var Ce=8,v=3,ee=258,ae=ee+v+1,nt=4096,Ue=16,He=ee,bn=29,ie=256,Te=ie+1+bn,me=30,oe=19,fe=2*Te+1,be=15,rt=9,at=255,it=32,ot=4,ve=256,t_=16,n_=17,r_=18,ft=0,N_=1,lt=2,$=-1,Q_=["need dictionary","stream end","","file error","stream error","data error","insufficient memory","buffer error",""],a_=te(de),i_=te(Se),Be=new g(19);Be[16]=2,Be[17]=3,Be[18]=7;var hn=k_($_()),sn=k_(new k(30).fill(5)),Fe=I_(hn),R_=I_(sn),__=et(ge,a_,ee),A_=tt(_t(Ee,i_));function he(e,t,n){if(void 0===t||void 0===n)return 1;let r=65535&e,i=e>>>16&65535,f=0;for(;n>0;){let e=n>2e3?2e3:n;n-=e;do{r=r+t[f++]|0,i=i+r|0;}while(--e);r%=65521,i%=65521;}return (i<<16|r)>>>0}var Ze=[[],[],[],[],[],[],[],[]];for(let e=0;e<256;e++){let t=e;for(let e=0;e<8;e++)t=1&t?3988292384^t>>>1:t>>>1;Ze[0][e]=t;}for(let e=0;e<256;e++)for(let t=1;t<8;t++){let n=Ze[t-1][e];Ze[t][e]=n>>>8^Ze[0][255&n];}var[ut,xn,pn,Sn,En,gn,Tn,wn]=Ze;function W(e=0,t,n){if(!t)return 0;void 0===n&&(n=t.length);let r=0|~e,i=0;if((n=z.min(n,t.length))>=8){let e=new DataView(t.buffer,t.byteOffset,n),f=n-8;for(;i<=f;i+=8){let t=r^e.getInt32(i,true),n=e.getInt32(i+4,true);r=wn[255&t]^Tn[t>>>8&255]^gn[t>>>16&255]^En[t>>>24&255]^Sn[255&n]^pn[n>>>8&255]^xn[n>>>16&255]^ut[n>>>24&255];}}for(;i<n;i++)r=r>>>8^ut[255&(r^t[i])];return (4294967295^r)>>>0}function xt(e){16==e.T?(Ae(e,e.p),e.p=0,e.T=0):e.T>=8&&(T(e,e.p),e.p>>=8,e.T-=8);}function pt(e){e.T>8?Ae(e,e.p):e.T>0&&T(e,e.p),e.Ce=1+(e.T-1&7),e.p=0,e.T=0;}function An(e,t,n){let r,i,f=[],_=0;for(r=1;r<=be;r++)_=_+n[r-1]<<1,f[r]=_;for(i=0;i<=t;i++){let t=e[i].je;0!=t&&(e[i].Qe=$e(f[t]++,t));}}function C(e,t,n){e.T>Ue-n?(e.p=65535&(e.p|t<<e.T),Ae(e,e.p),e.p=t>>Ue-e.T&65535,e.T+=n-Ue):(e.p=65535&(e.p|t<<e.T),e.T+=n);}function St(e){for(let t=0;t<e.N.length;t++)e.N[t].j=0;for(let t=0;t<e.U.length;t++)e.U[t].j=0;for(let t=0;t<e.De.length;t++)e.De[t].j=0;e.N[ve].j=1,e.ie=e.fe=0,e.H=e._e=0;}function Et(e){if(e.N&&e.N.length>=fe)for(let t=0;t<fe;t++)e.N[t]=Q();else {e.N=[];for(let t=0;t<fe;t++)e.N.push(Q());}if(e.U&&e.U.length>=2*me+1)for(let t=0;t<2*me+1;t++)e.U[t]=Q();else {e.U=[];for(let t=0;t<2*me+1;t++)e.U.push(Q());}if(e.De&&e.De.length>=2*oe+1)for(let t=0;t<2*oe+1;t++)e.De[t]=Q();else {e.De=[];for(let t=0;t<2*oe+1;t++)e.De.push(Q());}e.Ae=new ne(e.N,new re(Fe,a_,ie+1,Te,be)),e.Ie=new ne(e.U,new re(R_,i_,0,me,be)),e.He=new ne(e.De,new re(null,Be,0,oe,7)),e.p=0,e.T=0,e.Ce=0,St(e);}var se=1;function Dn(e,t,n){return n=e.Te[se],e.Te[se]=e.Te[e.Le--],z_(e,t,se),n}function mt(e,t,n,r){return e[t].j<e[n].j||e[t].j==e[n].j&&r[t]<=r[n]}function z_(e,t,n){let r=e.Te[n],i=n<<1;for(;i<=e.Le&&(i<e.Le&&mt(t,e.Te[i+1],e.Te[i],e.ye)&&i++,!mt(t,r,e.Te[i],e.ye));)e.Te[n]=e.Te[i],n=i,i<<=1;e.Te[n]=r;}function yn(e,t){let n,r,i,f,_,l,o=t.M,u=t.Z,a=t.C.W,c=t.C.q,s=t.C.S,h=t.C.$,d=0;for(f=0;f<=be;f++)e.ze[f]=0;for(o[e.Te[e.$e]].je=0,n=e.$e+1;n<fe;n++)r=e.Te[n],f=o[o[r].Ne].je+1,f>h&&(f=h,d++),o[r].je=f,!(r>u)&&(e.ze[f]++,_=0,r>=s&&(_=c[r-s]),l=o[r].j,e.ie+=l*(f+_),a&&(e.fe+=l*(a[r].je+_)));if(0!=d){do{for(f=h-1;0==e.ze[f];)f--;e.ze[f]--,e.ze[f+1]+=2,e.ze[h]--,d-=2;}while(d>0);for(f=h;0!=f;f--)for(r=e.ze[f];0!=r;)i=e.Te[--n],!(i>u)&&(o[i].je!=f&&(e.ie+=(f-o[i].je)*o[i].j,o[i].je=f),r--);}}function L_(e,t){let n,r,i,f=t.M,_=t.C.W,l=t.C.L,o=-1;for(e.Le=0,e.$e=fe,n=0;n<l;n++)0!=f[n].j?(e.Te[++e.Le]=o=n,e.ye[n]=0):f[n].je=0;for(;e.Le<2;)i=e.Te[++e.Le]=o<2?++o:0,f[i].j=1,e.ye[i]=0,e.ie--,_&&(e.fe-=_[i].je);for(t.Z=o,n=z.floor(e.Le/2);n>=1;n--)z_(e,f,n);i=l;do{n=Dn(e,f,n),r=e.Te[se],e.Te[--e.$e]=n,e.Te[--e.$e]=r,f[i].j=f[n].j+f[r].j,e.ye[i]=(e.ye[n]>=e.ye[r]?e.ye[n]:e.ye[r])+1,f[n].Ne=f[r].Ne=i,e.Te[se]=i++,z_(e,f,se);}while(e.Le>=2);e.Te[--e.$e]=e.Te[se],yn(e,t),An(f,t.Z,e.ze);}function bt(e,t,n){let r,i,f=-1,_=t[0].je,l=0,o=7,u=4;for(0==_&&(o=138,u=3),t[n+1].je=65535,r=0;r<=n;r++)i=_,_=t[r+1].je,!(++l<o&&i==_)&&(l<u?e.De[i].j+=l:0!=i?(i!=f&&e.De[i].j++,e.De[t_].j++):l<=10?e.De[n_].j++:e.De[r_].j++,l=0,f=i,0==_?(o=138,u=3):i==_?(o=6,u=3):(o=7,u=4));}function ht(e,t,n){let r,i=-1,f=t[0].je,_=0,l=7,o=4;0==f&&(l=138,o=3);for(let u=0;u<=n;u++)if(r=f,f=t[u+1].je,!(++_<l&&r==f)){if(_<o)do{C(e,e.De[r].Qe,e.De[r].je);}while(0!=--_);else 0!=r?(r!=i&&(C(e,e.De[r].Qe,e.De[r].je),_--),C(e,e.De[t_].Qe,e.De[t_].je),C(e,_-3,2)):_<=10?(C(e,e.De[n_].Qe,e.De[n_].je),C(e,_-3,3)):(C(e,e.De[r_].Qe,e.De[r_].je),C(e,_-11,7));_=0,i=r,0==f?(l=138,o=3):r==f?(l=6,o=3):(l=7,o=4);}}function vn(e){let t;for(bt(e,e.N,e.Ae.Z),bt(e,e.U,e.Ie.Z),L_(e,e.He),t=oe-1;t>=3&&0==e.De[pe[t]].je;t--);return e.ie+=3*(t+1)+5+5+4,t}function In(e,t,n,r){let i;for(C(e,t-257,5),C(e,n-1,5),C(e,r-4,4),i=0;i<r;i++)C(e,e.De[pe[i]].je,3);ht(e,e.N,t-1),ht(e,e.U,n-1);}function Pe(e,t,n,r,i=0){C(e,(ft<<1)+r,3),pt(e),Ae(e,n),Ae(e,~n),n&&t&&M(e.D,e.A,t,i,n),e.A+=n;}function gt(e){xt(e);}function Tt(e){C(e,N_<<1,3),C(e,Fe[ve].Qe,Fe[ve].je),xt(e);}function st(e,t,n){let r,i,f,_,l=0;if(0!=e.H)do{r=255&e.Me[l],r+=(255&e.Me[l+1])<<8,i=e.Me[l+2],l+=3,0==r?C(e,t[i].Qe,t[i].je):(f=__[i],C(e,t[f+ie+1].Qe,t[f+ie+1].je),_=a_[f],0!=_&&(i-=ge[f],C(e,i,_)),r--,f=y_(r),C(e,n[f].Qe,n[f].je),_=i_[f],0!=_&&(r-=Ee[f],C(e,r,_)));}while(l<e.H);C(e,t[ve].Qe,t[ve].je);}function kn(e){let t,n=4093624447;for(t=0;t<=31;t++,n>>=1)if(1&n&&0!=e.N[t].j)return 0;if(0!=e.N[9].j||0!=e.N[10].j||0!=e.N[13].j)return 1;for(t=32;t<ie;t++)if(0!=e.N[t].j)return 1;return 0}function wt(e,t,n,r,i=0){let f,_,l=0;e.ve>0?(2==e.o.t&&(e.o.t=kn(e)),L_(e,e.Ae),L_(e,e.Ie),l=vn(e),f=e.ie+3+7>>3,_=e.fe+3+7>>3,(_<=f||4==e.ke)&&(f=_)):f=_=n+5,n+4<=f&&t?Pe(e,t,n,r,i):_==f?(C(e,(N_<<1)+r,3),st(e,Fe,R_)):(C(e,(lt<<1)+r,3),In(e,e.Ae.Z+1,e.Ie.Z+1,l+1),st(e,e.N,e.U)),St(e),r&&pt(e);}function vt(){let e=je();return e.l=v_(e),e}var Ye=[{Ue:Lt,Re:0,Ye:0,Ee:0,Pe:0},{Ue:U_,Re:4,Ye:4,Ee:8,Pe:4},{Ue:U_,Re:4,Ye:5,Ee:16,Pe:8},{Ue:U_,Re:4,Ye:6,Ee:32,Pe:32},{Ue:Ne,Re:4,Ye:4,Ee:16,Pe:16},{Ue:Ne,Re:8,Ye:16,Ee:32,Pe:32},{Ue:Ne,Re:8,Ye:16,Ee:128,Pe:128},{Ue:Ne,Re:8,Ye:32,Ee:128,Pe:256},{Ue:Ne,Re:32,Ye:128,Ee:258,Pe:1024},{Ue:Ne,Re:32,Ye:258,Ee:258,Pe:4096}];function At(e){return 2*e-(e>4?9:0)}function l_(e,t,n){return ((t<<e.X^n)&e.V)>>>0}function u_(e,t){e.be=l_(e,e.be,e.u[t+(v-1)]);let n=e.J[t&e.F]=e.K[e.be];return e.K[e.be]=t,n}function It(e){e.K[e.O-1]=0,Ve(e.K,0,(e.O-1)*e.K.BYTES_PER_ELEMENT);}function Un(e){let t,n,r=e.h;for(t=e.O;t>0;)t--,n=e.K[t],e.K[t]=n>=r?n-r:0;for(t=r;t>0;)t--,n=e.J[t],e.J[t]=n>=r?n-r:0;}function H_(e,t,n,r){let i=e.avail_in;return i>r&&(i=r),0==i?0:(e.avail_in-=i,M(t,n,e.next_in,e.next_in_index,i),1==e.l.P?e.i=he(e.i,new p(t.buffer,t.byteOffset+n,i),i):2==e.l.P&&(e.i=W(e.i,new p(t.buffer,t.byteOffset+n,i),i)),e.next_in_index+=i,e.total_in+=i,i)}function c_(e){let t,n,r=e.h;do{if(n=e.qe-e.ce-e.ae,0==n&&0==e.ae&&0==e.ce?n=r:-1==n&&n--,e.ae>=r+ye(e)&&(M(e.u,0,e.u,r,r-n),e.Se-=r,e.ae-=r,e.ue-=r,e.le>e.ae&&(e.le=e.ae),Un(e),n+=r),0==e.o.avail_in)break;if(t=H_(e.o,e.u,e.ae+e.ce,n),e.ce+=t,e.ce+e.le>=v){let t=e.ae-e.le;for(e.be=e.u[t],e.be=l_(e,e.be,e.u[t+1]);e.le&&(e.be=l_(e,e.be,e.u[t+v-1]),e.J[t&e.F]=e.K[e.be],e.K[e.be]=t,t++,e.le--,!(e.ce+e.le<v)););}}while(e.ce<ae&&0!=e.o.avail_in);if(e.k<e.qe){let t,n=e.ae+e.ce;e.k<n?(t=e.qe-n,t>He&&(t=He),Ve(e.u,n,t),e.k=n+t):e.k<n+He&&(t=n+He-e.k,t>e.qe-e.k&&(t=e.qe-e.k),Ve(e.u,e.k,t),e.k+=t);}}function kt(e,t,n=8,r=15,i=Ce,f=0){let _=1;if(!e)return -2;if(e.msg="",-1==t&&(t=6),r<0){if(_=0,r<-15)return -2;r=-r;}else r>15&&(_=2,r-=16);if(i<1||i>rt||8!=n||r<8||r>15||t<0||t>9||f<0||f>4||8==r&&1!=_)return -2;8==r&&(r=9);let l=v_(e);return l?(e.l=l,l.o=e,l.Y=42,l.P=_,l.B=void 0,l.v=r,l.h=1<<l.v,l.F=l.h-1,l.G=i+7,l.O=1<<l.G,l.V=l.O-1,l.X=(l.G+v-1)/v,l.u=new p(2*l.h),l.J=new g(l.h),l.K=new g(l.O),l.k=0,l.ee=1<<i+6,l.D=new p(l.ee*ot),l.ne=4*l.ee,l.u&&l.J&&l.K&&l.D?(l.Me=l.D.subarray(l.ee),l.I=l.te+l.ee,l.R=3*(l.ee-1),l.ve=t,l.ke=f,l.We=n,Fn(e)):(l.Y=666,e.msg=D_(-4),P_(e),-4)):-4}function Z_(e){if(null==e)return true;let t=e.l;return !t||t.o!=e||42!=t.Y&&57!=t.Y&&69!=t.Y&&73!=t.Y&&91!=t.Y&&103!=t.Y&&113!=t.Y&&666!=t.Y}function Hn(e){let t;return Z_(e)?-2:(e.total_in=e.total_out=0,e.msg="",e.t=2,t=e.l,t.A=0,t.re=t.te,t.P<0&&(t.P=-t.P),t.Y=2==t.P?57:42,e.i=2==t.P?W(0):he(0),t.oe=-2,Et(t),0)}function Bn(e){e.qe=2*e.h,It(e),e.xe=Ye[e.ve].Ye,e.ge=Ye[e.ve].Re,e.me=Ye[e.ve].Ee,e.pe=Ye[e.ve].Pe,e.ae=0,e.ue=0,e.ce=0,e.le=0,e.se=e.he=v-1,e.we=0,e.be=0;}function Fn(e){let t=Hn(e);return 0==t&&Bn(e.l),t}function Me(e,t){T(e,t>>8),T(e,255&t);}function q(e){let t,n=e.l;gt(n),t=n.A,t>e.avail_out&&(t=e.avail_out),0!=t&&(M(e.next_out,e.next_out_index,n.D,n.re,t),e.next_out_index+=t,n.re+=t,e.total_out+=t,e.avail_out-=t,n.A-=t,0==n.A&&(n.re=n.te));}function Ie(e,t){let n=e.l;n.B&&n.B.Be&&(e.i=W(e.i,new p(n.D.buffer,n.te+t,n.A-t),n.A-t));}function Nt(e,t){let n,r=e.l;if(Z_(e)||t>5||t<0)return we(e,-2);if(!e.next_out||0!=e.avail_in&&!e.next_in||666==r.Y&&4!=t)return we(e,-2);if(0==e.avail_out)return we(e,-5);if(n=r.oe,r.oe=t,0!=r.A){if(q(e),0==e.avail_out)return r.oe=$,0}else if(0==e.avail_in&&At(t)<=At(n)&&4!=t)return we(e,-5);if(666==r.Y&&0!=e.avail_in)return we(e,-5);if(42==r.Y&&0==r.P&&(r.Y=113),42==r.Y){let t,n=8+(r.v-8<<4)<<8;if(t=r.ke>=2||r.ve<2?0:r.ve<6?1:6==r.ve?2:3,n|=t<<6,0!=r.ae&&(n|=it),n+=31-n%31,Me(r,n),0!=r.ae&&(Me(r,e.i>>16),Me(r,65535&e.i)),e.i=1,r.Y=113,q(e),0!=r.A)return r.oe=$,0}if(57==r.Y)if(e.i=W(0),T(r,31),T(r,139),T(r,8),r.B)T(r,(r.B.Fe?1:0)+(r.B.Be?2:0)+(null==r.B.Ge?0:4)+(null==r.B.Oe?0:8)+(null==r.B.Ve?0:16)),T(r,255&r.B.Xe),T(r,r.B.Xe>>>8&255),T(r,r.B.Xe>>>16&255),T(r,r.B.Xe>>>24&255),T(r,9==r.ve?2:r.ke>=2||r.ve<2?4:0),T(r,255&r.B.Je),null!=r.B.Ge&&(T(r,255&r.B.Ke),T(r,r.B.Ke>>>8&255)),r.B.Be&&(e.i=W(e.i,r.D,r.A)),r.Ze=0,r.Y=69;else if(T(r,0),T(r,0),T(r,0),T(r,0),T(r,0),T(r,9==r.ve?2:r.ke>=2||r.ve<2?4:0),T(r,at),r.Y=113,q(e),0!=r.A)return r.oe=$,0;if(69==r.Y){if(r.B&&null!=r.B.Ge){let t=r.A,n=(65535&r.B.Ke)-r.Ze;for(;r.A+n>r.ne;){let i=r.ne-r.A;if(M(r.D,r.A,r.B.Ge,r.Ze,i),r.A=r.ne,Ie(e,t),r.Ze+=i,q(e),0!=r.A)return r.oe=$,0;t=0,n-=i;}M(r.D,r.A,r.B.Ge,r.Ze,n),r.A+=n,Ie(e,t),r.Ze=0;}r.Y=73;}if(73==r.Y){if(r.B&&r.B.Oe&&r.B.Oe.length){let t,n=r.A;do{if(r.A==r.ne){if(Ie(e,n),q(e),0!=r.A)return r.oe=$,0;n=0;}t=r.B.Oe[r.Ze++],T(r,t);}while(0!=t);Ie(e,n),r.Ze=0;}r.Y=91;}if(91==r.Y){if(r.B&&r.B.Ve&&r.B.Ve.length){let t,n=r.A;do{if(r.A==r.ne){if(Ie(e,n),q(e),0!=r.A)return r.oe=$,0;n=0;}t=r.B.Ve[r.Ze++],T(r,t);}while(0!=t);Ie(e,n);}r.Y=103;}if(103==r.Y){if(r.B&&r.B.Be){if(r.A+2>r.ne&&(q(e),0!=r.A))return r.oe=$,0;T(r,255&e.i),T(r,e.i>>>8&255),e.i=W(0);}if(r.Y=113,q(e),0!=r.A)return r.oe=$,0}if(0!=e.avail_in||0!=r.ce||0!=t&&666!=r.Y){let n=0==r.ve?Lt(r,t):2==r.ke?Pn(r,t):3==r.ke?Zn(r,t):Ye[r.ve].Ue(r,t);if((2==n||3==n)&&(r.Y=666),0==n||2==n)return 0==e.avail_out&&(r.oe=$),0;if(1==n&&(1==t?Tt(r):5!=t&&(Pe(r,null,0,0),3==t&&(It(r),0==r.ce&&(r.ae=0,r.ue=0,r.le=0))),q(e),0==e.avail_out))return r.oe=$,0}return 4!=t?0:r.P<=0?1:(2==r.P?(T(r,255&e.i),T(r,e.i>>>8&255),T(r,e.i>>>16&255),T(r,e.i>>>24&255),T(r,255&e.total_in),T(r,e.total_in>>>8&255),T(r,e.total_in>>>16&255),T(r,e.total_in>>>24&255)):(Me(r,e.i>>>16&65535),Me(r,65535&e.i)),q(e),r.P>0&&(r.P=-r.P),0!=r.A?0:1)}function P_(e){if(Z_(e))return -2;let t=e.l,n=t.Y;return t.u=Z,t.J=qe,t.K=qe,t.D=Z,t.Me=Z,t.Te=new R(0),t.ye=Z,t.ze=qe,t.N.length=0,t.U.length=0,t.De.length=0,t.B=void 0,t.te=0,t.re=0,t.I=0,113==n?-3:0}function Rt(e,t){let n,r,i=e.pe,f=e.ae,_=e.he,l=e.me,o=e.ae>ye(e)?e.ae-ye(e):0,u=e.J,a=e.F,c=e.u,s=e.ce,h=ee<s?ee:s,d=c[f],w=c[f+1],b=c[f+_-1],v=c[f+_];_>=e.ge&&(i>>=2),l>s&&(l=s);do{if(n=t,c[n+_]!=v||c[n+_-1]!=b||c[n]!=d||c[n+1]!=w)continue;let i=2;for(;i<h&&c[f+i]==c[n+i];)i++;if(r=i,r>_){if(e.Se=t,_=r,r>=l)break;b=c[f+_-1],v=c[f+_];}}while((t=u[t&a])>o&&0!=--i);return _<=s?_:s}function zt(e,t){wt(e,e.u,e.ae-e.ue,t,e.ue),e.ue=e.ae,q(e.o);}function j(e,t){return zt(e,t?1:0),0==e.o.avail_out?t?2:0:null}var Dt=65535;function ke(e,t){return e<t?e:t}function Lt(e,t){let n,r,i,f=ke(e.ne-5,e.h),_=0,l=e.o.avail_in;do{if(n=Dt,i=e.T+42>>3,e.o.avail_out<i||(i=e.o.avail_out-i,r=e.ae-e.ue,n>r+e.o.avail_in&&(n=r+e.o.avail_in),n>i&&(n=i),n<f&&(0==n&&4!=t||0==t||n!=r+e.o.avail_in)))break;_=4==t&&n==r+e.o.avail_in?1:0,Pe(e,null,0,_),e.D[e.A-4]=n,e.D[e.A-3]=n>>8,e.D[e.A-2]=~n,e.D[e.A-1]=~n>>8,q(e.o),r&&(r>n&&(r=n),M(e.o.next_out,e.o.next_out_index,e.u,e.ue,r),e.o.next_out_index+=r,e.o.avail_out-=r,e.o.total_out+=r,e.ue+=r,n-=r),n&&(H_(e.o,e.o.next_out,e.o.next_out_index,n),e.o.next_out_index+=n,e.o.avail_out-=n,e.o.total_out+=n);}while(0==_);if(l-=e.o.avail_in,l){if(l>=e.h){e._e=2;let t=e.o.next_in_index-e.h;M(e.u,0,e.o.next_in,t,e.h),e.ae=e.h,e.le=e.ae;}else e.qe-e.ae<=l&&(e.ae-=e.h,M(e.u,0,e.u,e.h,e.ae),e._e<2&&e._e++,e.le>e.ae&&(e.le=e.ae)),M(e.u,e.ae,e.o.next_in,e.o.next_in_index-l,l),e.ae+=l,e.le+=ke(l,e.h-e.le);e.ue=e.ae;}return e.k<e.ae&&(e.k=e.ae),_?(e.Ce=8,3):0!=t&&4!=t&&0==e.o.avail_in&&e.ae==e.ue?1:(i=e.qe-e.ae,e.o.avail_in>i&&e.ue>=e.h&&(e.ue-=e.h,e.ae-=e.h,M(e.u,0,e.u,e.h,e.ae),e._e<2&&e._e++,i+=e.h,e.le>e.ae&&(e.le=e.ae)),i>e.o.avail_in&&(i=e.o.avail_in),i&&(H_(e.o,e.u,e.ae,i),e.ae+=i,e.le+=ke(i,e.h-e.le)),e.k<e.ae&&(e.k=e.ae),i=e.T+42>>3,i=ke(e.ne-i,Dt),f=ke(i,e.h),r=e.ae-e.ue,(r>=f||(r||4==t)&&0!=t&&0==e.o.avail_in&&r<=i)&&(n=ke(r,i),_=4==t&&0==e.o.avail_in&&n==r?1:0,Pe(e,e.u,n,_,e.ue),e.ue+=n,q(e.o)),_&&(e.Ce=8),_?2:0)}function U_(e,t){let n,r=false;for(;;){if(e.ce<ae){if(c_(e),e.ce<ae&&0==t)return 0;if(0==e.ce)break}if(n=0,e.ce>=v&&(n=u_(e,e.ae)),0!=n&&e.ae-n<=ye(e)&&(e.se=Rt(e,n)),e.se>=v)if(e.ae,e.Se,e.se,r=e_(e,e.ae-e.Se,e.se-v),e.ce-=e.se,e.se<=e.xe&&e.ce>=v){e.se--;do{e.ae++,n=u_(e,e.ae);}while(0!=--e.se);e.ae++;}else e.ae+=e.se,e.se=0,e.be=e.u[e.ae],e.be=l_(e,e.be,e.u[e.ae+1]);else r=De(e,e.u[e.ae]),e.ce--,e.ae++;if(r){let t=j(e,false);if(null!=t)return t}}if(e.le=e.ae<v-1?e.ae:v-1,4==t){return j(e,true)??3}if(e.H){let t=j(e,false);if(null!=t)return t}return 1}function Ne(e,t){let n,r=false;for(;;){if(e.ce<ae){if(c_(e),e.ce<ae&&0==t)return 0;if(0==e.ce)break}if(n=0,e.ce>=v&&(n=u_(e,e.ae)),e.he=e.se,e.de=e.Se,e.se=v-1,0!=n&&e.he<e.xe&&e.ae-n<=ye(e)&&(e.se=Rt(e,n),e.se<=5&&(1==e.ke||e.se==v&&e.ae-e.Se>nt)&&(e.se=v-1)),e.he>=v&&e.se<=e.he){let t=e.ae+e.ce-v;e.ae,e.de,e.he,r=e_(e,e.ae-1-e.de,e.he-v),e.ce-=e.he-1,e.he-=2;do{++e.ae<=t&&(n=u_(e,e.ae));}while(0!=--e.he);if(e.we=0,e.se=v-1,e.ae++,r){let t=j(e,false);if(null!=t)return t}}else if(e.we){if(r=De(e,e.u[e.ae-1]),r&&zt(e,0),e.ae++,e.ce--,0==e.o.avail_out)return 0}else e.we=1,e.ae++,e.ce--;}if(e.we&&(r=De(e,e.u[e.ae-1]),e.we=0),e.le=e.ae<v-1?e.ae:v-1,4==t){return j(e,true)??3}if(e.H){let t=j(e,false);if(null!=t)return t}return 1}function Zn(e,t){let n,r,i,f;for(;;){if(e.ce<=ee){if(c_(e),e.ce<=ee&&0==t)return 0;if(0==e.ce)break}if(e.se=0,e.ce>=v&&e.ae>0&&(i=e.ae-1,r=e.u[i],r==++i&&r==++i&&r==++i)){f=e.ae+ee;do{}while(r==++i&&r==++i&&r==++i&&r==++i&&r==++i&&r==++i&&r==++i&&r==++i&&i<f);e.se=ee-(f-i),e.se>e.ce&&(e.se=e.ce);}if(e.se>=v?(e.ae,e.ae,e.se,n=e_(e,1,e.se-v),e.ce-=e.se,e.ae+=e.se,e.se=0):(n=De(e,e.u[e.ae]),e.ce--,e.ae++),n){let t=j(e,false);if(null!=t)return t}}if(e.le=0,4==t){return j(e,true)??3}if(e.H){let t=j(e,false);if(null!=t)return t}return 1}function Pn(e,t){let n=false;for(;;){if(0==e.ce&&(c_(e),0==e.ce)){if(0==t)return 0;break}if(e.se=0,n=De(e,e.u[e.ae]),e.ce--,e.ae++,n){let t=j(e,false);if(null!=t)return t}}if(e.le=0,4==t){return j(e,true)??3}if(e.H){let t=j(e,false);if(null!=t)return t}return 1}var ue=852,d_=592,m_=594,Ot=Ee.map(e=>e+1),Ct=ge.subarray(0,-1).map(e=>e+3),Mn=[16,1,73,1,200,1],Yn=[144,1,72,1,78,1],Ut=Se.map(qt),Ht=Se.map(Vt);Ut.push(64,2),Ht.push(142,2);var Bt=de.slice(0,-2).map(qt),Ft=de.slice(0,-2).map(Vt);Bt.push(...Mn),Ft.push(...Yn);var Zt=new g([...Ct,258,0,0]),Pt=new g([...Ct,3,0,0]),Mt=te(Bt),Yt=te(Ft),Xt=new g([...Ot,0,0]),Wt=new g([...Ot,32769,49153]),Gt=te(Ut),Kt=te(Ht);function qt(e,t){return t%2?e:e+16}function Vt(e,t){return t%2?e:e+128}function Jt(e,t){let n,r=e.l,i=e.next_in_index,f=e.next_out_index,_=e.next_in,l=e.next_out,o=r.u,u=r.p>>>0,a=r.T>>>0,c=r.et,s=r.tt,h=(1<<r.nt)-1,d=(1<<r.rt)-1,w=r.h>>>0,b=r.k>>>0,v=r.m>>>0,k=r.it,g=f-(t-e.avail_out),m=f+(e.avail_out-257),p=i+(e.avail_in-5),x=0,T=0,y=0,z=0;e:do{for(;a<15;){if(!(i<_.length))break e;u+=_[i++]<<a,a+=8;}n=c[u&h];t:for(;;){if(y=n>>>16&255,u>>>=y,a-=y,y=n>>>24,0==y){l[f++]=65535&n;break}if(16&y){if(x=65535&n,y&=15,y){for(;a<y;){if(!(i<_.length)){r.ft=16200;break e}u+=_[i++]<<a,a+=8;}x+=u&(1<<y)-1,u>>>=y,a-=y;}for(;a<15;){if(!(i<_.length)){r.ft=16200;break e}u+=_[i++]<<a,a+=8;}n=s[u&d];n:for(;;){if(y=n>>>16&255,u>>>=y,a-=y,y=n>>>24,16&y){if(T=65535&n,y&=15,y){for(;a<y;){if(!(i<_.length)){r.ft=16200;break e}u+=_[i++]<<a,a+=8;}T+=u&(1<<y)-1,u>>>=y,a-=y;}let t=x,c=f-g;if(T>c){let n=T-c;if(n>b&&k){e.msg="invalid distance too far back",r.ft=16209;break e}if(0==v){if(z=w-n,!(n<t)){for(let e=0;e<t;++e)l[f++]=o[z++];continue e}for(let e=0;e<n;++e)l[f++]=o[z++];t-=n,z=f-T;}else if(v<n){z=w+v-n;let e=n-v;if(!(e<t)){for(let e=0;e<t;++e)l[f++]=o[z++];continue e}for(let t=0;t<e;++t)l[f++]=o[z++];if(t-=e,z=0,v<t){for(let e=0;e<v;++e)l[f++]=o[z++];t-=v,z=f-T;}}else {if(z=v-n,!(n<t)){for(let e=0;e<t;++e)l[f++]=o[z++];continue e}for(let e=0;e<n;++e)l[f++]=o[z++];t-=n,z=f-T;}for(;t>2;)l[f++]=l[z++],l[f++]=l[z++],l[f++]=l[z++],t-=3;t&&(l[f++]=l[z++],t>1&&(l[f++]=l[z++]));}else {for(z=f-T;t>2;)l[f++]=l[z++],l[f++]=l[z++],l[f++]=l[z++],t-=3;t&&(l[f++]=l[z++],t>1&&(l[f++]=l[z++]));}break}if(64&y){e.msg="invalid distance code",r.ft=16209;break e}n=s[(65535&n)+(u&(1<<y)-1)];continue n}break}if(64&y){if(32&y){r.ft=16191;break e}e.msg="invalid literal/length code",r.ft=16209;break e}n=c[(65535&n)+(u&(1<<y)-1)];continue t}}while(i<p&&f<m);let M=a>>3;i-=M,a-=M<<3,u&=(1<<a)-1,e.next_in_index=i,e.next_out_index=f,e.avail_in=i<p?p-i+5:5-(i-p),e.avail_out=f<m?m-f+257:257-(f-m),r.p=u>>>0,r.T=a>>>0;}var Xn=new R(0);function M_(e,t){let n=Xn,r=t?ue+m_:ue+d_;return {...Je(e,0),o:e,ft:16180,_t:false,P:0,lt:false,ot:0,ut:0,ct:0,st:0,u:Z,ht:0,dt:0,Ge:0,et:n,tt:n,nt:0,rt:0,wt:0,bt:0,vt:0,kt:0,gt:n,xt:new g(320),Tt:new g(288),yt:new R(r),zt:0,it:true,Mt:0,Ct:0,Zt:t}}function We(e,t,n){return e<<24|t<<16|n}function b_(e=0,t=0,n=0){return We(e,t,n)}function h_(e=1){return We(64,e,0)}function Qt(e=0){return We(96,e,0)}function Y_(e){return (255&e)<<24|(e>>8&255)<<16|(e>>16&255)<<8|e>>24&255}var Le=15,Gn={Zt:false,Wt:Zt,qt:Mt,St:Xt,Lt:Gt,$t:20,Dt:257,At:0,It:d_,Ht:false,Qt:true},Kn={Zt:true,Wt:Pt,qt:Yt,St:Wt,Lt:Kt,$t:19,Dt:256,At:-1,It:m_,Ht:true,Qt:false};function Oe(e,t,n,r,i,f,_,l){let o,u,a,c,s,h,d,w,b,v,k,m,p,x,T,y,z,M,C,Z=new g(Le+1),W=new g(Le+1),q=l?Kn:Gn;for(o=0;o<=Le;o++)Z[o]=0;for(u=0;u<n;u++)Z[t[u]]++;for(s=i.jt,c=Le;c>=1&&0==Z[c];c--);if(s>c&&(s=c),0==c)return q.Qt?(T=h_(1),r.jt[0]=T,r.jt[1]=T,i.jt=1,0):-1;for(a=1;a<c&&0==Z[a];a++);for(s<a&&(s=a),w=1,o=1;o<=Le;o++)if(w<<=1,w-=Z[o],w<0)return -1;if(w>0&&(0==e||1!=c))return -1;for(W[1]=0,o=1;o<Le;o++)W[o+1]=W[o]+Z[o];for(u=0;u<n;u++)0!=t[u]&&(f[W[t[u]]++]=u);switch(e){case 0:z=M=f,C=q.$t;break;case 1:z=q.Wt,M=q.qt,C=q.Dt;break;default:z=q.St,M=q.Lt,C=q.At;}if(v=0,u=0,o=a,y=_.jt,h=s,d=0,p=-1,b=1<<s,x=b-1,1==e&&(q.Ht?b>=ue:b>ue)||2==e&&(q.Ht?b>=q.It:b>q.It))return 1;for(;;){T=qn(f,u,o,d,e,z,M,C,q.Zt),k=1<<o-d,m=1<<h,a=m;do{m-=k;let e=(v>>d)+m;r.jt[y+e]=T;}while(0!=m);for(k=1<<o-1;v&k;)k>>=1;if(0!=k?(v&=k-1,v+=k):v=0,u++,0==--Z[o]){if(o==c)break;o=t[f[u]];}if(o>s&&(v&x)!=p){for(0==d&&(d=s),y+=1<<h,h=o-d,w=1<<h;h+d<c&&(w-=Z[h+d],!(w<=0));)h++,w<<=1;if(b+=1<<h,1==e&&(q.Ht?b>=ue:b>ue)||2==e&&(q.Ht?b>=q.It:b>q.It))return 1;p=v&x,r.jt[_.jt+p]=We(h,s,y-_.jt);}}if(0!=v)for(T=h_(o-d);0!=v;){for(0!=d&&(v&x)!=p&&(d=0,o=s,y=_.jt,h=s,T=h_(o)),r.jt[y+(v>>d)]=T,k=1<<o-1;v&k;)k>>=1;0!=k?(v&=k-1,v+=k):v=0;}return _.jt+=b,i.jt=s,0}function qn(e,t,n,r,i,f,_,l,o){let u;if(o?e[t]<l:e[t]+1<l)u=b_(0,n-r,e[t]);else if(o?e[t]>l:e[t]>=l)if(o&&1==i){let i=e[t]-257;u=b_(_[i],n-r,f[i]);}else {let i=o?e[t]:e[t]-l;u=b_(_[i],n-r,f[i]);}else u=Qt(n-r);return u}var p_=new R(0),Qn={Nt:true,Ut:new R(544),Rt:p_,Yt:p_},$n={Nt:true,Ut:new R(544),Rt:p_,Yt:p_};function $t(){let e=je();return e.l=M_(e,false),e}function Ge(e){let t;return !(e&&(t=e.l,!(!t||t.o!=e||t.Zt&&(t.ft<16191||t.ft>16209)||!t.Zt&&(t.ft<16180||t.ft>16211))))}function er(e){let t;return Ge(e)?-2:(t=e.l,e.total_in=e.total_out=t.st=0,e.msg="",t.P&&(e.i=1&t.P),t.ft=t.Zt?16191:16180,t._t=false,t.lt=false,t.ot=-1,t.ut=t.Zt?65536:32768,delete t.B,t.p=0,t.T=0,t.et=t.yt,t.tt=t.yt,t.gt=t.yt,t.it=true,t.Mt=-1,0)}function _r(e){let t;return Ge(e)?-2:(t=e.l,t.h=0,t.k=0,t.m=0,er(e))}function tr(e,t){let n,r;if(Ge(e))return -2;if(r=e.l,t<0){if(t<-16)return -2;n=0,r.Zt=-16==t,t=-t;}else n=5+(t>>4),r.Zt=false,t<48&&(t&=15);let i=r.Zt?16:15;return t&&(t<8||t>i)?-2:(r.u.length>0&&r.v!=t&&(r.u=Z),r.P=n,r.v=t,_r(e))}function en(e,t){let n,r;if(!e)return -2;e.msg="";let i=-16==t;return r=M_(e,i),e.l=r,r.o=e,r.ft=i?16191:16180,n=tr(e,t),n}function nr(e){let t=e.Zt?$n:Qn,n={jt:0};if(t.Nt){let r,i,f;for(r=0;r<144;)e.xt[r++]=8;for(;r<256;)e.xt[r++]=9;for(;r<280;)e.xt[r++]=7;for(;r<288;)e.xt[r++]=8;t.Ut.fill(0),f=t.Ut,t.Rt=f,i=9;let _={jt:f},l={jt:i},o={jt:0};for(Oe(1,e.xt,288,_,l,e.Tt,o,e.Zt),f=_.jt,i=l.jt,e.zt=o.jt,r=0;r<32;)e.xt[r++]=5;i=5;let u=o.jt,a={jt:f},c={jt:i};n.jt=u,Oe(2,e.xt,32,a,c,e.Tt,n,e.Zt),t.Yt=f.slice(u),t.Nt=false;}e.et=t.Rt,e.nt=9,e.tt=t.Yt,e.rt=5,e.zt=n.jt;}function rr(e,t,n){let r=e.l;if(!(r.u&&0!=r.u.length||(r.u=new p(1<<r.v),r.u)))return 1;if(0==r.h&&(r.h=1<<r.v,r.m=0,r.k=0),n>=r.h)M(r.u,0,t,t.length-r.h,r.h),r.m=0,r.k=r.h;else {let e=r.h-r.m;e>n&&(e=n),M(r.u,r.m,t,t.length-n,e),(n-=e)?(M(r.u,0,t,t.length-n,n),r.m=n,r.k=r.h):(r.m+=e,r.m==r.h&&(r.m=0),r.k<r.h&&(r.k+=e));}return 0}var S_=class extends L{constructor(){super("Need more input");}};function _n(e,t){let n,r,i,f,_,l,o,u,a,c,s,h,d,w,b,v,k,g=new p(4);if(Ge(e)||!e.next_out||!e.next_in&&0!=e.avail_in)return -2;l=0,u=0,o=0,a=0,r=Z,i=0,f=Z,_=0,n=e.l,16191==n.ft&&(n.ft=16192),z(),c=l,s=o,k=0;try{for(;;)switch(n.ft){case 16180:if(0==n.P){n.ft=16192;break}if(L(16),2&n.P&&35615==u){0==n.v&&(n.v=15),n.ct=W(0),n.ct=T(n.ct,u),q(),n.ft=16181;break}if(n.B&&(n.B.Et=-1),!(1&n.P)||(($(8)<<8)+(u>>8))%31){e.msg="incorrect header check",n.ft=16209;break}if(8!=$(4)){e.msg="unknown compression method",n.ft=16209;break}if(D(4),v=$(4)+8,0==n.v&&(n.v=v),v>15||v>n.v){e.msg="invalid window size",n.ft=16209;break}n.ut=1<<v,n.ot=0,e.i=n.ct=he(0),n.ft=512&u?16189:16191,q();break;case 16181:if(L(16),n.ot=u,8!=(255&n.ot)){e.msg="unknown compression method",n.ft=16209;break}if(57344&n.ot){e.msg="unknown header flags set",n.ft=16209;break}n.B&&(n.B.Fe=u>>8&1),512&n.ot&&4&n.P&&(n.ct=T(n.ct,u)),q(),n.ft=16182;case 16182:L(32),n.B&&(n.B.Xe=u),512&n.ot&&4&n.P&&(n.ct=y(n.ct,u)),q(),n.ft=16183;case 16183:L(16),n.B&&(n.B.Pt=255&u,n.B.Je=u>>8),512&n.ot&&4&n.P&&(n.ct=T(n.ct,u)),q(),n.ft=16184;case 16184:1024&n.ot?(L(16),n.ht=u,n.B&&(n.B.Ke=u),512&n.ot&&4&n.P&&(n.ct=T(n.ct,u)),q()):n.B&&(n.B.Ge=Z),n.ft=16185;case 16185:if(1024&n.ot&&(h=n.ht,h>l&&(h=l),h&&(n.B&&n.B.Ge&&n.B.Bt&&(v=n.B.Ke-n.ht)<n.B.Bt&&M(n.B.Ge,v,r,i,h),512&n.ot&&4&n.P&&(n.ct=W(n.ct,r.subarray(i,i+h),h)),l-=h,i+=h,n.ht-=h),n.ht))return m();n.ht=0,n.ft=16186;case 16186:if(2048&n.ot){if(0==l)return m();h=0;do{v=r[i+h++],n.B&&n.B.Ft&&n.ht<n.B.Ft&&(n.B.Oe[n.ht++]=v);}while(v&&h<l);if(512&n.ot&&4&n.P&&(n.ct=W(n.ct,r.subarray(i,i+h),h)),l-=h,i+=h,v)return m()}else n.B&&(n.B.Oe=Z);n.ht=0,n.ft=16187;case 16187:if(4096&n.ot){if(0==l)return m();h=0;do{v=r[i+h++],n.B&&n.B.Gt&&n.ht<n.B.Gt&&(n.B.Ve[n.ht++]=v);}while(v&&h<l);if(512&n.ot&&4&n.P&&(n.ct=W(n.ct,r.subarray(i,i+h),h)),l-=h,i+=h,v)return m()}else n.B&&(n.B.Ve=Z);n.ft=16188;case 16188:if(512&n.ot){if(L(16),4&n.P&&u!=(65535&n.ct)){e.msg="header crc mismatch",n.ft=16209;break}q();}n.B&&(n.B.Be=n.ot>>9&1,n.B.Et=1),e.i=n.ct=W(0),n.ft=16191;break;case 16189:L(32),e.i=n.ct=Y_(u),q(),n.ft=16190;case 16190:if(!n.lt)return C(),2;e.i=n.ct=he(0),n.ft=16191;case 16191:if(5==t||6==t)return m();case 16192:if(n._t){A(),n.ft=16206;break}switch(L(3),n._t=!!$(1),D(1),$(2)){case 0:n.ft=16193;break;case 1:if(nr(n),n.ft=16199,6==t)return D(2),m();break;case 2:n.ft=16196;break;case 3:e.msg="invalid block type",n.ft=16209;}D(2);break;case 16193:if(A(),L(32),(65535&u)!=(u>>>16^65535)){e.msg="invalid stored block lengths",n.ft=16209;break}if(n.ht=65535&u,q(),n.ft=16194,6==t)return m();case 16194:n.ft=16195;case 16195:if(h=n.ht,h){if(h>l&&(h=l),h>o&&(h=o),0==h)return m();M(f,_,r,i,h),l-=h,i+=h,o-=h,_+=h,n.ht-=h;break}n.ft=16191;break;case 16196:if(L(14),n.bt=$(5)+257,D(5),n.vt=$(5)+1,D(5),n.wt=$(4)+4,D(4),n.bt>286||!n.Zt&&n.vt>30){e.msg=n.Zt?"too many length":"too many length or distance symbols",n.ft=16209;break}n.kt=0,n.ft=16197;case 16197:for(;n.kt<n.wt;)L(3),n.xt[pe[n.kt++]]=$(3),D(3);for(;n.kt<19;)n.xt[pe[n.kt++]]=0;n.gt=n.yt,n.et=n.tt=n.gt,n.nt=7;let c={jt:n.gt},g={jt:n.nt},p={jt:0};if(k=Oe(0,n.xt,19,c,g,n.Tt,p,n.Zt),n.gt=c.jt,n.nt=g.jt,k){e.msg="invalid code lengths set",n.ft=16209;break}n.kt=0,n.ft=16198;case 16198:for(;n.kt<n.bt+n.vt;){for(;w=n.et[$(n.nt)],!((w>>>16&255)<=a);)S();if((65535&w)<16)D(w>>>16&255),n.xt[n.kt++]=65535&w;else {if(16==(65535&w)){if(L(2+(w>>>16&255)),D(w>>>16&255),0==n.kt){e.msg="invalid bit length repeat",n.ft=16209;break}v=n.xt[n.kt-1],h=3+$(2),D(2);}else 17==(65535&w)?(L(3+(w>>>16&255)),D(w>>>16&255),v=0,h=3+$(3),D(3)):(L(7+(w>>>16&255)),D(w>>>16&255),v=0,h=11+$(7),D(7));if(n.kt+h>n.bt+n.vt){e.msg="invalid bit length repeat",n.ft=16209;break}for(;h--;)n.xt[n.kt++]=v;}}if(16209==n.ft)break;if(0==n.xt[256]){e.msg="invalid code -- missing end-of-block",n.ft=16209;break}n.gt=n.yt,n.nt=9;let I={jt:n.gt},H={jt:n.nt},Q={jt:0};k=Oe(1,n.xt,n.bt,I,H,n.Tt,Q,n.Zt),n.gt=I.jt,n.nt=H.jt;let j=Q.jt;if(n.et=n.gt.slice(0,j),k){e.msg="invalid literal/lengths set",n.ft=16209;break}n.rt=6;let N=n.xt.subarray(n.bt,n.bt+n.vt),U={jt:n.gt},R={jt:n.rt},Y={jt:j};if(k=Oe(2,N,n.vt,U,R,n.Tt,Y,n.Zt),n.gt=U.jt,n.rt=R.jt,n.tt=n.gt.slice(j),k){e.msg="invalid distances set",n.ft=16209;break}if(n.ft=16199,6==t)return m();case 16199:n.ft=16200;case 16200:if(!n.Zt&&l>=6&&o>=258){C(),Jt(e,s),z(),16191==n.ft&&(n.Mt=-1);break}for(n.Mt=0;w=n.et[$(n.nt)],!((w>>>16&255)<=a);)S();if(w>>>24&&!(w>>>24&240)){for(b=w;w=n.et[(65535&b)+($((b>>>16&255)+(b>>>24))>>(b>>>16&255))],!((b>>>16&255)+(w>>>16&255)<=a);)S();D(b>>>16&255),n.Mt+=b>>>16&255;}if(D(w>>>16&255),n.Mt+=w>>>16&255,n.ht=65535&w,!(w>>>24)){n.ft=16205;break}if(w>>>24&32){n.Mt=-1,n.ft=16191;break}if(w>>>24&64){e.msg="invalid literal/length code",n.ft=16209;break}n.Ge=w>>>24&(n.Zt?31:15),n.ft=16201;case 16201:n.Ge&&(L(n.Ge),n.ht+=$(n.Ge),D(n.Ge),n.Mt+=n.Ge),n.Ct=n.ht,n.ft=16202;case 16202:for(;w=n.tt[$(n.rt)],!((w>>>16&255)<=a);)S();if(!(w>>>24&240)){for(b=w;w=n.tt[(65535&b)+($((b>>>16&255)+(b>>>24))>>(b>>>16&255))],!((b>>>16&255)+(w>>>16&255)<=a);)S();D(b>>>16&255),n.Mt+=b>>>16&255;}if(D(w>>>16&255),n.Mt+=w>>>16&255,w>>>24&64){e.msg="invalid distance code",n.ft=16209;break}n.dt=65535&w,n.Ge=w>>>24&15,n.ft=16203;case 16203:n.Ge&&(L(n.Ge),n.dt+=$(n.Ge),D(n.Ge),n.Mt+=n.Ge),n.ft=16204;case 16204:if(0==o)return m();if(h=s-o,n.dt>h){if(h=n.dt-h,h>n.k&&n.it){e.msg="invalid distance too far back",n.ft=16209;break}h>n.m?(h-=n.m,d=n.h-h):d=n.m-h,h>n.ht&&(h=n.ht),h>o&&(h=o);for(let e=0;e<h;++e)f[_]=255&n.u[d],++_,++d;}else {d=_-n.dt,h=n.ht,h>o&&(h=o);for(let e=0;e<h;++e)f[_]=f[d],++_,++d;}h>o&&(h=o),o-=h,n.ht-=h,0==n.ht&&(n.ft=16200);break;case 16205:if(0==o)return m();f[_++]=n.ht,o--,n.ft=16200;break;case 16206:if(n.P){if(L(32),s-=o,e.total_out+=s,n.st+=s,4&n.P&&s){let t=f.subarray(_-s,_);e.i=n.ct=x(n.ct,t,s);}if(s=o,4&n.P&&(n.ot?u:Y_(u)>>>0)!=n.ct){e.msg="incorrect data check",n.ft=16209;break}q();}n.ft=16207;case 16207:if(n.P&&n.ot){if(L(32),4&n.P&&u!=(4294967295&n.st)){e.msg="incorrect length check",n.ft=16209;break}q();}n.ft=16208;case 16208:return k=1,m();case 16209:return k=-3,m();case 16210:return -4;default:return -2}}catch(e){if(e instanceof S_)return m();throw e}function m(){if(C(),n.h||s!=e.avail_out&&n.ft<16209&&(n.Zt?n.ft<16208:n.ft<16206)||4!=t){let t=s-e.avail_out;if(rr(e,e.next_out.subarray(e.next_out_index-t,e.next_out_index),t))return n.ft=16210,-4}return c-=e.avail_in,s-=e.avail_out,e.total_in+=c,e.total_out+=s,n.st+=s,4&n.P&&s&&(e.i=n.ct=x(n.ct,e.next_out.subarray(e.next_out_index-s,e.next_out_index),s)),e.t=n.T+(n._t?64:0)+(16191==n.ft?128:0)+(16199==n.ft||16194==n.ft?256:0),(0==c&&0==s&&0==k||4==t&&0==k)&&(k=-5),k}function x(e,t,r){return n.ot?W(e,t,r):he(e,t,r)}function T(e,t){return g[0]=255&t,g[1]=t>>>8&255,W(e,g,2)>>>0}function y(e,t){return g[0]=255&t,g[1]=t>>>8&255,g[2]=t>>>16&255,g[3]=t>>>24&255,W(e,g,4)>>>0}function z(){f=e.next_out,_=e.next_out_index,o=e.avail_out,r=e.next_in,i=e.next_in_index,l=e.avail_in,u=n.p,a=n.T;}function C(){e.next_out=f,e.next_out_index=_,e.avail_out=o,e.next_in=r,e.next_in_index=i,e.avail_in=l,n.p=u,n.T=a;}function q(){u=0,a=0;}function S(){if(0==l)throw new S_;l--,u+=(255&r[i])<<a,i++,u>>>=0,a+=8;}function L(e){for(;a<e;)S();}function $(e){return u&(1<<e)-1}function D(e){u>>>=e,a-=e;}function A(){u>>>=7&a,a-=7&a;}}function tn(e){return Ge(e)?-2:0}var X_=65536,ar=32768,W_=class{constructor(e=16,t=X_){this.Ot=[],this.Vt=e;for(let n=0;n<z.min(e,4);n++)this.Ot.push(new p(t));}acquire(e=X_){for(let t=this.Ot.length-1;t>=0;t--){let n=this.Ot[t];if(n.length>=e)return this.Ot.splice(t,1),n}return new p(e)}release(e){this.Ot.length<this.Vt&&this.Ot.push(e);}};function nn(e){let t=new W_(32,X_),n=null;function r(){let t=e.Xt(),n=e.Jt(t);if(0!=n&&0!=n)throw new L("init failed: "+n);return {o:t}}function i(e){try{t.release(e);}catch{}}return new H({start(){},transform(f,_){n||(n=r());let l=n.o;if(n.Kt)return;let o=0;for(;o<f.length;){let r=z.min(f.length-o,ar),u=f.subarray(o,o+r);for(l.next_in=u,l.next_in_index=0,l.avail_in=u.length;l.avail_in>0;){let r=t.acquire(),f=false;try{l.next_out=r,l.next_out_index=0,l.avail_out=r.length;let i=e.en(l,0),o=r.length-l.avail_out;if(o>0){let e=!1,n={tn:r.subarray(0,o),release:()=>{e||(e=!0,t.release(r));}};f=!0,_.enqueue(n);}if(1==i){n.Kt=!0;break}if(0!=i)throw new L("process error: "+i)}finally{f||i(r);}}if(n.Kt)break;o+=r;}},flush(f){if(n&&n.Kt)return;n||(n=r());let _=n.o;for(;;){let n=t.acquire(),r=false;try{_.next_out=n,_.next_out_index=0,_.avail_out=n.length;let i=e.en(_,4),l=n.length-_.avail_out;if(l>0){let e=!1,i={tn:n.subarray(0,l),release:()=>{e||(e=!0,t.release(n));}};r=!0,f.enqueue(i);}if(1==i)break;if(0!=i)throw new L("finalization error: "+i)}finally{r||i(n);}}let l=e.nn(_);if(0!=l&&0!=l)throw new L("end failed: "+l)}})}function rn(){return new H({start(){},transform(e,t){try{t.enqueue(e.tn.slice(0));}finally{e.release();}},flush(){}})}function ir(e="deflate",t){let n="gzip"==e?31:"deflate-raw"==e?-15:15,r=t&&"number"==typeof t.level?t.level:-1;return nn({Xt:()=>vt(),Jt:e=>kt(e,r,8,n,8,0),en:Nt,nn:P_})}function or(e="deflate"){let t="gzip"==e?31:"deflate-raw"==e?-15:"deflate64-raw"==e?-16:15;return nn({Xt:()=>$t(),Jt:e=>en(e,t),en:_n,nn:tn})}var E_=class{constructor(e="deflate",t){let n=ir(e,t);this.writable=n.writable,this.readable=n.readable.pipeThrough(rn());}},g_=class{constructor(e="deflate"){let t=or(e);this.writable=t.writable,this.readable=t.readable.pipeThrough(rn());}};
|
|
8162
|
+
var{Uint8Array:p,Uint16Array:g,Int32Array:R,TransformStream:H,Math:z,Error:L,Array:k}=globalThis,pe=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],Z=new p(0),qe=new g(0),de=[];for(let e=0;e<6;e++)de.push(e,0==e?8:4);de.push(0,1);var Se=[];for(let e=0;e<14;e++)Se.push(e,0==e?4:2);var Ee=new g([0,1,2,3,4,6,8,12,16,24,32,48,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096,6144,8192,12288,16384,24576]),ge=new g([0,1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32,40,48,56,64,80,96,112,128,160,192,224,0]);function M(e,t,n,r,i){if(0==i)return;let f=e instanceof p?e:new p(e.buffer,e.byteOffset,e.byteLength),_=n instanceof p?n.subarray(r,r+i):new p(n.buffer,n.byteOffset+r,i);f.set(_,t);}function Ve(e,t,n){0!=n&&(e instanceof p?e:new p(e.buffer,e.byteOffset,e.byteLength)).fill(0,t,t+n);}function je(){return {next_in:Z,next_in_index:0,avail_in:0,total_in:0,next_out:Z,next_out_index:0,avail_out:0,total_out:0,msg:"",t:0,i:0,_:0,l:void 0}}function Je(e,t){let n=1<<t;return {o:e,u:new p(n),h:n,v:t,k:0,m:0,p:0,T:0}}function te(e){let t=[];for(let n=0;n<e.length;n+=2){let r=e[n],i=e[n+1];for(let e=0;e<i;e++)t.push(r);}return new g(t)}var ne=class{constructor(e,t){this.M=e,this.C=t,this.Z=0;}},re=class{constructor(e,t,n,r,i){this.W=e,this.q=t,this.S=n,this.L=r,this.$=i;}};function D_(e){return Q_[e<-6||e>2?9:2-e]||""}function we(e,t){try{e.msg=D_(t);}catch(n){e.msg="zlib error "+String(t)+" ("+n+")";}return t}function $e(e,t){let n=e>>>0,r=0;for(let e=0;e<t;e++)r=r<<1|1&n,n>>>=1;return r}function T(e,t){e.D[e.A++]=t;}function Ae(e,t){T(e,255&t),T(e,t>>>8&255);}function e_(e,t,n){let r=255&n,i=65535&t,f=e.I+e.H;return e.D[f]=255&i,e.D[f+1]=i>>>8&255,e.D[f+2]=r,e.H+=3,i=i-1&65535,e.N[__[r]+ie+1].j++,e.U[y_(i)].j++,e.H==e.R}function De(e,t){let n=255&t,r=e.I+e.H;return e.D[r]=0,e.D[r+1]=0,e.D[r+2]=n,e.H+=3,e.N[n].j++,e.H==e.R}function ye(e){return e.h-ae}function y_(e){return e<256?A_[e]:A_[256+(e>>7)]}function v_(e){let t=Ce+7,n=1<<t,r=(1<<t)-1,i=z.floor((t+v-1)/v),f=1<<8+Ce;return {...Je(e,15),o:e,Y:42,P:0,B:void 0,F:32767,G:t,O:n,V:r,X:i,J:new g(32768),K:new g(n),ee:f,D:new p(32768),te:0,ne:32768,A:0,re:0,ie:0,fe:0,_e:0,le:0,oe:-2,ue:0,ae:0,ce:0,se:0,he:0,de:0,we:0,be:0,ve:0,ke:0,ge:0,me:0,pe:0,xe:0,Te:new R(2*Te+1),ye:new p(2*Te+1),ze:new g(be+1),H:0,R:0,Me:Z,I:0,Ce:0,Ze:0,We:8,qe:32768,Se:0,Le:0,$e:0,N:new k(fe).fill(0).map(()=>Q()),U:new k(2*me+1).fill(0).map(()=>Q()),De:new k(2*oe+1).fill(0).map(()=>Q()),Ae:w_(),Ie:w_(),He:w_()}}function I_(e){let t=[];for(let n=0;n<e.length;n+=2){let r=e[n],i=e[n+1],f=Q();f.Qe=r,f.je=i,t.push(f);}return t}function Q(){return {j:0,Qe:0,Ne:0,je:0}}function w_(){return new ne([],dn(null,Z,0,0,0))}function dn(e,t,n,r,i){return new re(e,t,n,r,i)}function $_(){let e=new k(288).fill(0);for(let t=0;t<=143;t++)e[t]=8;for(let t=144;t<=255;t++)e[t]=9;for(let t=256;t<=279;t++)e[t]=7;for(let t=280;t<=287;t++)e[t]=8;return e}function k_(e){let{code:t,length:n}=mn(e),r=new g(2*e.length),i=0;for(let f=0;f<e.length;f++){let e=n[f]||0,_=t[f]||0;r[i++]=e?$e(_,e):0,r[i++]=e;}return new g(r)}function et(e,t,n){let r=0;for(let n=0;n<e.length;n++){let i=t[n]?1<<t[n]:1,f=e[n]+i-1;f>r&&(r=f);}r<n&&(r=n);let i=new p(r+1);for(let n=0;n<=r;n++)for(let r=0;r<e.length;r++){let f=t[r]?1<<t[r]:1,_=e[r];if(n>=_&&n<=_+f-1){i[n]=r;break}}let f=0;for(let n=0;n<e.length-1;n++){let r=t[n]?1<<t[n]:1,i=e[n]+r-1;i>f&&(f=i);}return i[f]=e.length-1,i}function _t(e,t){let n=0;for(let r=0;r<e.length;r++){let i=t[r]?1<<t[r]:1,f=e[r]+i-1;f>n&&(n=f);}let r=new p(n+1);for(let i=0;i<=n;i++)for(let n=0;n<e.length;n++){let f=t[n]?1<<t[n]:1,_=e[n];if(i>=_&&i<=_+f-1){r[i]=n;break}}return r}function tt(e){let t=new p(512),n=e.length-1;for(let r=0;r<256;r++)t[r]=r<=n?e[r]:e[n];for(let r=256;r<=n;r++){let n=r>>7;t[256+(n>255?255:n)]=e[r];}for(let e=257;e<512;e++)0==t[e]&&(t[e]=t[e-1]);return t}function mn(e){let t=z.max(...e),n=new k(t+1).fill(0);for(let t of e)t>0&&n[t]++;let r=new k(e.length).fill(0),i=new k(t+1).fill(0),f=0;for(let e=1;e<=t;e++)f=f+n[e-1]<<1,i[e]=f;for(let t=0;t<e.length;t++){let n=e[t];0!=n&&(r[t]=i[n]++);}return {code:r,length:e}}var Ce=8,v=3,ee=258,ae=ee+v+1,nt=4096,Ue=16,He=ee,bn=29,ie=256,Te=ie+1+bn,me=30,oe=19,fe=2*Te+1,be=15,rt=9,at=255,it=32,ot=4,ve=256,t_=16,n_=17,r_=18,ft=0,N_=1,lt=2,$=-1,Q_=["need dictionary","stream end","","file error","stream error","data error","insufficient memory","buffer error",""],a_=te(de),i_=te(Se),Be=new g(19);Be[16]=2,Be[17]=3,Be[18]=7;var hn=k_($_()),sn=k_(new k(30).fill(5)),Fe=I_(hn),R_=I_(sn),__=et(ge,a_,ee),A_=tt(_t(Ee,i_));function he(e,t,n){if(void 0===t||void 0===n)return 1;let r=65535&e,i=e>>>16&65535,f=0;for(;n>0;){let e=n>2e3?2e3:n;n-=e;do{r=r+t[f++]|0,i=i+r|0;}while(--e);r%=65521,i%=65521;}return (i<<16|r)>>>0}var Ze=[[],[],[],[],[],[],[],[]];for(let e=0;e<256;e++){let t=e;for(let e=0;e<8;e++)t=1&t?3988292384^t>>>1:t>>>1;Ze[0][e]=t;}for(let e=0;e<256;e++)for(let t=1;t<8;t++){let n=Ze[t-1][e];Ze[t][e]=n>>>8^Ze[0][255&n];}var[ut,xn,pn,Sn,En,gn,Tn,wn]=Ze;function W(e=0,t,n){if(!t)return 0;void 0===n&&(n=t.length);let r=0|~e,i=0;if((n=z.min(n,t.length))>=8){let e=new DataView(t.buffer,t.byteOffset,n),f=n-8;for(;i<=f;i+=8){let t=r^e.getInt32(i,true),n=e.getInt32(i+4,true);r=wn[255&t]^Tn[t>>>8&255]^gn[t>>>16&255]^En[t>>>24&255]^Sn[255&n]^pn[n>>>8&255]^xn[n>>>16&255]^ut[n>>>24&255];}}for(;i<n;i++)r=r>>>8^ut[255&(r^t[i])];return (4294967295^r)>>>0}function xt(e){16==e.T?(Ae(e,e.p),e.p=0,e.T=0):e.T>=8&&(T(e,e.p),e.p>>=8,e.T-=8);}function pt(e){e.T>8?Ae(e,e.p):e.T>0&&T(e,e.p),e.Ce=1+(e.T-1&7),e.p=0,e.T=0;}function An(e,t,n){let r,i,f=[],_=0;for(r=1;r<=be;r++)_=_+n[r-1]<<1,f[r]=_;for(i=0;i<=t;i++){let t=e[i].je;0!=t&&(e[i].Qe=$e(f[t]++,t));}}function C(e,t,n){e.T>Ue-n?(e.p=65535&(e.p|t<<e.T),Ae(e,e.p),e.p=t>>Ue-e.T&65535,e.T+=n-Ue):(e.p=65535&(e.p|t<<e.T),e.T+=n);}function St(e){for(let t=0;t<e.N.length;t++)e.N[t].j=0;for(let t=0;t<e.U.length;t++)e.U[t].j=0;for(let t=0;t<e.De.length;t++)e.De[t].j=0;e.N[ve].j=1,e.ie=e.fe=0,e.H=e._e=0;}function Et(e){if(e.N&&e.N.length>=fe)for(let t=0;t<fe;t++)e.N[t]=Q();else {e.N=[];for(let t=0;t<fe;t++)e.N.push(Q());}if(e.U&&e.U.length>=2*me+1)for(let t=0;t<2*me+1;t++)e.U[t]=Q();else {e.U=[];for(let t=0;t<2*me+1;t++)e.U.push(Q());}if(e.De&&e.De.length>=2*oe+1)for(let t=0;t<2*oe+1;t++)e.De[t]=Q();else {e.De=[];for(let t=0;t<2*oe+1;t++)e.De.push(Q());}e.Ae=new ne(e.N,new re(Fe,a_,ie+1,Te,be)),e.Ie=new ne(e.U,new re(R_,i_,0,me,be)),e.He=new ne(e.De,new re(null,Be,0,oe,7)),e.p=0,e.T=0,e.Ce=0,St(e);}var se=1;function Dn(e,t,n){return n=e.Te[se],e.Te[se]=e.Te[e.Le--],z_(e,t,se),n}function mt(e,t,n,r){return e[t].j<e[n].j||e[t].j==e[n].j&&r[t]<=r[n]}function z_(e,t,n){let r=e.Te[n],i=n<<1;for(;i<=e.Le&&(i<e.Le&&mt(t,e.Te[i+1],e.Te[i],e.ye)&&i++,!mt(t,r,e.Te[i],e.ye));)e.Te[n]=e.Te[i],n=i,i<<=1;e.Te[n]=r;}function yn(e,t){let n,r,i,f,_,l,o=t.M,u=t.Z,a=t.C.W,c=t.C.q,s=t.C.S,h=t.C.$,d=0;for(f=0;f<=be;f++)e.ze[f]=0;for(o[e.Te[e.$e]].je=0,n=e.$e+1;n<fe;n++)r=e.Te[n],f=o[o[r].Ne].je+1,f>h&&(f=h,d++),o[r].je=f,!(r>u)&&(e.ze[f]++,_=0,r>=s&&(_=c[r-s]),l=o[r].j,e.ie+=l*(f+_),a&&(e.fe+=l*(a[r].je+_)));if(0!=d){do{for(f=h-1;0==e.ze[f];)f--;e.ze[f]--,e.ze[f+1]+=2,e.ze[h]--,d-=2;}while(d>0);for(f=h;0!=f;f--)for(r=e.ze[f];0!=r;)i=e.Te[--n],!(i>u)&&(o[i].je!=f&&(e.ie+=(f-o[i].je)*o[i].j,o[i].je=f),r--);}}function L_(e,t){let n,r,i,f=t.M,_=t.C.W,l=t.C.L,o=-1;for(e.Le=0,e.$e=fe,n=0;n<l;n++)0!=f[n].j?(e.Te[++e.Le]=o=n,e.ye[n]=0):f[n].je=0;for(;e.Le<2;)i=e.Te[++e.Le]=o<2?++o:0,f[i].j=1,e.ye[i]=0,e.ie--,_&&(e.fe-=_[i].je);for(t.Z=o,n=z.floor(e.Le/2);n>=1;n--)z_(e,f,n);i=l;do{n=Dn(e,f,n),r=e.Te[se],e.Te[--e.$e]=n,e.Te[--e.$e]=r,f[i].j=f[n].j+f[r].j,e.ye[i]=(e.ye[n]>=e.ye[r]?e.ye[n]:e.ye[r])+1,f[n].Ne=f[r].Ne=i,e.Te[se]=i++,z_(e,f,se);}while(e.Le>=2);e.Te[--e.$e]=e.Te[se],yn(e,t),An(f,t.Z,e.ze);}function bt(e,t,n){let r,i,f=-1,_=t[0].je,l=0,o=7,u=4;for(0==_&&(o=138,u=3),t[n+1].je=65535,r=0;r<=n;r++)i=_,_=t[r+1].je,!(++l<o&&i==_)&&(l<u?e.De[i].j+=l:0!=i?(i!=f&&e.De[i].j++,e.De[t_].j++):l<=10?e.De[n_].j++:e.De[r_].j++,l=0,f=i,0==_?(o=138,u=3):i==_?(o=6,u=3):(o=7,u=4));}function ht(e,t,n){let r,i=-1,f=t[0].je,_=0,l=7,o=4;0==f&&(l=138,o=3);for(let u=0;u<=n;u++)if(r=f,f=t[u+1].je,!(++_<l&&r==f)){if(_<o)do{C(e,e.De[r].Qe,e.De[r].je);}while(0!=--_);else 0!=r?(r!=i&&(C(e,e.De[r].Qe,e.De[r].je),_--),C(e,e.De[t_].Qe,e.De[t_].je),C(e,_-3,2)):_<=10?(C(e,e.De[n_].Qe,e.De[n_].je),C(e,_-3,3)):(C(e,e.De[r_].Qe,e.De[r_].je),C(e,_-11,7));_=0,i=r,0==f?(l=138,o=3):r==f?(l=6,o=3):(l=7,o=4);}}function vn(e){let t;for(bt(e,e.N,e.Ae.Z),bt(e,e.U,e.Ie.Z),L_(e,e.He),t=oe-1;t>=3&&0==e.De[pe[t]].je;t--);return e.ie+=3*(t+1)+5+5+4,t}function In(e,t,n,r){let i;for(C(e,t-257,5),C(e,n-1,5),C(e,r-4,4),i=0;i<r;i++)C(e,e.De[pe[i]].je,3);ht(e,e.N,t-1),ht(e,e.U,n-1);}function Pe(e,t,n,r,i=0){C(e,(ft<<1)+r,3),pt(e),Ae(e,n),Ae(e,~n),n&&t&&M(e.D,e.A,t,i,n),e.A+=n;}function gt(e){xt(e);}function Tt(e){C(e,N_<<1,3),C(e,Fe[ve].Qe,Fe[ve].je),xt(e);}function st(e,t,n){let r,i,f,_,l=0;if(0!=e.H)do{r=255&e.Me[l],r+=(255&e.Me[l+1])<<8,i=e.Me[l+2],l+=3,0==r?C(e,t[i].Qe,t[i].je):(f=__[i],C(e,t[f+ie+1].Qe,t[f+ie+1].je),_=a_[f],0!=_&&(i-=ge[f],C(e,i,_)),r--,f=y_(r),C(e,n[f].Qe,n[f].je),_=i_[f],0!=_&&(r-=Ee[f],C(e,r,_)));}while(l<e.H);C(e,t[ve].Qe,t[ve].je);}function kn(e){let t,n=4093624447;for(t=0;t<=31;t++,n>>=1)if(1&n&&0!=e.N[t].j)return 0;if(0!=e.N[9].j||0!=e.N[10].j||0!=e.N[13].j)return 1;for(t=32;t<ie;t++)if(0!=e.N[t].j)return 1;return 0}function wt(e,t,n,r,i=0){let f,_,l=0;e.ve>0?(2==e.o.t&&(e.o.t=kn(e)),L_(e,e.Ae),L_(e,e.Ie),l=vn(e),f=e.ie+3+7>>3,_=e.fe+3+7>>3,(_<=f||4==e.ke)&&(f=_)):f=_=n+5,n+4<=f&&t?Pe(e,t,n,r,i):_==f?(C(e,(N_<<1)+r,3),st(e,Fe,R_)):(C(e,(lt<<1)+r,3),In(e,e.Ae.Z+1,e.Ie.Z+1,l+1),st(e,e.N,e.U)),St(e),r&&pt(e);}function vt(){let e=je();return e.l=v_(e),e}var Ye=[{Ue:Lt,Re:0,Ye:0,Ee:0,Pe:0},{Ue:U_,Re:4,Ye:4,Ee:8,Pe:4},{Ue:U_,Re:4,Ye:5,Ee:16,Pe:8},{Ue:U_,Re:4,Ye:6,Ee:32,Pe:32},{Ue:Ne,Re:4,Ye:4,Ee:16,Pe:16},{Ue:Ne,Re:8,Ye:16,Ee:32,Pe:32},{Ue:Ne,Re:8,Ye:16,Ee:128,Pe:128},{Ue:Ne,Re:8,Ye:32,Ee:128,Pe:256},{Ue:Ne,Re:32,Ye:128,Ee:258,Pe:1024},{Ue:Ne,Re:32,Ye:258,Ee:258,Pe:4096}];function At(e){return 2*e-(e>4?9:0)}function l_(e,t,n){return ((t<<e.X^n)&e.V)>>>0}function u_(e,t){e.be=l_(e,e.be,e.u[t+(v-1)]);let n=e.J[t&e.F]=e.K[e.be];return e.K[e.be]=t,n}function It(e){e.K[e.O-1]=0,Ve(e.K,0,(e.O-1)*e.K.BYTES_PER_ELEMENT);}function Un(e){let t,n,r=e.h;for(t=e.O;t>0;)t--,n=e.K[t],e.K[t]=n>=r?n-r:0;for(t=r;t>0;)t--,n=e.J[t],e.J[t]=n>=r?n-r:0;}function H_(e,t,n,r){let i=e.avail_in;return i>r&&(i=r),0==i?0:(e.avail_in-=i,M(t,n,e.next_in,e.next_in_index,i),1==e.l.P?e.i=he(e.i,new p(t.buffer,t.byteOffset+n,i),i):2==e.l.P&&(e.i=W(e.i,new p(t.buffer,t.byteOffset+n,i),i)),e.next_in_index+=i,e.total_in+=i,i)}function c_(e){let t,n,r=e.h;do{if(n=e.qe-e.ce-e.ae,0==n&&0==e.ae&&0==e.ce?n=r:-1==n&&n--,e.ae>=r+ye(e)&&(M(e.u,0,e.u,r,r-n),e.Se-=r,e.ae-=r,e.ue-=r,e.le>e.ae&&(e.le=e.ae),Un(e),n+=r),0==e.o.avail_in)break;if(t=H_(e.o,e.u,e.ae+e.ce,n),e.ce+=t,e.ce+e.le>=v){let t=e.ae-e.le;for(e.be=e.u[t],e.be=l_(e,e.be,e.u[t+1]);e.le&&(e.be=l_(e,e.be,e.u[t+v-1]),e.J[t&e.F]=e.K[e.be],e.K[e.be]=t,t++,e.le--,!(e.ce+e.le<v)););}}while(e.ce<ae&&0!=e.o.avail_in);if(e.k<e.qe){let t,n=e.ae+e.ce;e.k<n?(t=e.qe-n,t>He&&(t=He),Ve(e.u,n,t),e.k=n+t):e.k<n+He&&(t=n+He-e.k,t>e.qe-e.k&&(t=e.qe-e.k),Ve(e.u,e.k,t),e.k+=t);}}function kt(e,t,n=8,r=15,i=Ce,f=0){let _=1;if(!e)return -2;if(e.msg="",-1==t&&(t=6),r<0){if(_=0,r<-15)return -2;r=-r;}else r>15&&(_=2,r-=16);if(i<1||i>rt||8!=n||r<8||r>15||t<0||t>9||f<0||f>4||8==r&&1!=_)return -2;8==r&&(r=9);let l=v_(e);return l?(e.l=l,l.o=e,l.Y=42,l.P=_,l.B=void 0,l.v=r,l.h=1<<l.v,l.F=l.h-1,l.G=i+7,l.O=1<<l.G,l.V=l.O-1,l.X=(l.G+v-1)/v,l.u=new p(2*l.h),l.J=new g(l.h),l.K=new g(l.O),l.k=0,l.ee=1<<i+6,l.D=new p(l.ee*ot),l.ne=4*l.ee,l.u&&l.J&&l.K&&l.D?(l.Me=l.D.subarray(l.ee),l.I=l.te+l.ee,l.R=3*(l.ee-1),l.ve=t,l.ke=f,l.We=n,Fn(e)):(l.Y=666,e.msg=D_(-4),P_(e),-4)):-4}function Z_(e){if(null==e)return true;let t=e.l;return !t||t.o!=e||42!=t.Y&&57!=t.Y&&69!=t.Y&&73!=t.Y&&91!=t.Y&&103!=t.Y&&113!=t.Y&&666!=t.Y}function Hn(e){let t;return Z_(e)?-2:(e.total_in=e.total_out=0,e.msg="",e.t=2,t=e.l,t.A=0,t.re=t.te,t.P<0&&(t.P=-t.P),t.Y=2==t.P?57:42,e.i=2==t.P?W(0):he(0),t.oe=-2,Et(t),0)}function Bn(e){e.qe=2*e.h,It(e),e.xe=Ye[e.ve].Ye,e.ge=Ye[e.ve].Re,e.me=Ye[e.ve].Ee,e.pe=Ye[e.ve].Pe,e.ae=0,e.ue=0,e.ce=0,e.le=0,e.se=e.he=v-1,e.we=0,e.be=0;}function Fn(e){let t=Hn(e);return 0==t&&Bn(e.l),t}function Me(e,t){T(e,t>>8),T(e,255&t);}function q(e){let t,n=e.l;gt(n),t=n.A,t>e.avail_out&&(t=e.avail_out),0!=t&&(M(e.next_out,e.next_out_index,n.D,n.re,t),e.next_out_index+=t,n.re+=t,e.total_out+=t,e.avail_out-=t,n.A-=t,0==n.A&&(n.re=n.te));}function Ie(e,t){let n=e.l;n.B&&n.B.Be&&(e.i=W(e.i,new p(n.D.buffer,n.te+t,n.A-t),n.A-t));}function Nt(e,t){let n,r=e.l;if(Z_(e)||t>5||t<0)return we(e,-2);if(!e.next_out||0!=e.avail_in&&!e.next_in||666==r.Y&&4!=t)return we(e,-2);if(0==e.avail_out)return we(e,-5);if(n=r.oe,r.oe=t,0!=r.A){if(q(e),0==e.avail_out)return r.oe=$,0}else if(0==e.avail_in&&At(t)<=At(n)&&4!=t)return we(e,-5);if(666==r.Y&&0!=e.avail_in)return we(e,-5);if(42==r.Y&&0==r.P&&(r.Y=113),42==r.Y){let t,n=8+(r.v-8<<4)<<8;if(t=r.ke>=2||r.ve<2?0:r.ve<6?1:6==r.ve?2:3,n|=t<<6,0!=r.ae&&(n|=it),n+=31-n%31,Me(r,n),0!=r.ae&&(Me(r,e.i>>16),Me(r,65535&e.i)),e.i=1,r.Y=113,q(e),0!=r.A)return r.oe=$,0}if(57==r.Y)if(e.i=W(0),T(r,31),T(r,139),T(r,8),r.B)T(r,(r.B.Fe?1:0)+(r.B.Be?2:0)+(null==r.B.Ge?0:4)+(null==r.B.Oe?0:8)+(null==r.B.Ve?0:16)),T(r,255&r.B.Xe),T(r,r.B.Xe>>>8&255),T(r,r.B.Xe>>>16&255),T(r,r.B.Xe>>>24&255),T(r,9==r.ve?2:r.ke>=2||r.ve<2?4:0),T(r,255&r.B.Je),null!=r.B.Ge&&(T(r,255&r.B.Ke),T(r,r.B.Ke>>>8&255)),r.B.Be&&(e.i=W(e.i,r.D,r.A)),r.Ze=0,r.Y=69;else if(T(r,0),T(r,0),T(r,0),T(r,0),T(r,0),T(r,9==r.ve?2:r.ke>=2||r.ve<2?4:0),T(r,at),r.Y=113,q(e),0!=r.A)return r.oe=$,0;if(69==r.Y){if(r.B&&null!=r.B.Ge){let t=r.A,n=(65535&r.B.Ke)-r.Ze;for(;r.A+n>r.ne;){let i=r.ne-r.A;if(M(r.D,r.A,r.B.Ge,r.Ze,i),r.A=r.ne,Ie(e,t),r.Ze+=i,q(e),0!=r.A)return r.oe=$,0;t=0,n-=i;}M(r.D,r.A,r.B.Ge,r.Ze,n),r.A+=n,Ie(e,t),r.Ze=0;}r.Y=73;}if(73==r.Y){if(r.B&&r.B.Oe&&r.B.Oe.length){let t,n=r.A;do{if(r.A==r.ne){if(Ie(e,n),q(e),0!=r.A)return r.oe=$,0;n=0;}t=r.B.Oe[r.Ze++],T(r,t);}while(0!=t);Ie(e,n),r.Ze=0;}r.Y=91;}if(91==r.Y){if(r.B&&r.B.Ve&&r.B.Ve.length){let t,n=r.A;do{if(r.A==r.ne){if(Ie(e,n),q(e),0!=r.A)return r.oe=$,0;n=0;}t=r.B.Ve[r.Ze++],T(r,t);}while(0!=t);Ie(e,n);}r.Y=103;}if(103==r.Y){if(r.B&&r.B.Be){if(r.A+2>r.ne&&(q(e),0!=r.A))return r.oe=$,0;T(r,255&e.i),T(r,e.i>>>8&255),e.i=W(0);}if(r.Y=113,q(e),0!=r.A)return r.oe=$,0}if(0!=e.avail_in||0!=r.ce||0!=t&&666!=r.Y){let n=0==r.ve?Lt(r,t):2==r.ke?Pn(r,t):3==r.ke?Zn(r,t):Ye[r.ve].Ue(r,t);if((2==n||3==n)&&(r.Y=666),0==n||2==n)return 0==e.avail_out&&(r.oe=$),0;if(1==n&&(1==t?Tt(r):5!=t&&(Pe(r,null,0,0),3==t&&(It(r),0==r.ce&&(r.ae=0,r.ue=0,r.le=0))),q(e),0==e.avail_out))return r.oe=$,0}return 4!=t?0:r.P<=0?1:(2==r.P?(T(r,255&e.i),T(r,e.i>>>8&255),T(r,e.i>>>16&255),T(r,e.i>>>24&255),T(r,255&e.total_in),T(r,e.total_in>>>8&255),T(r,e.total_in>>>16&255),T(r,e.total_in>>>24&255)):(Me(r,e.i>>>16&65535),Me(r,65535&e.i)),q(e),r.P>0&&(r.P=-r.P),0!=r.A?0:1)}function P_(e){if(Z_(e))return -2;let t=e.l,n=t.Y;return t.u=Z,t.J=qe,t.K=qe,t.D=Z,t.Me=Z,t.Te=new R(0),t.ye=Z,t.ze=qe,t.N.length=0,t.U.length=0,t.De.length=0,t.B=void 0,t.te=0,t.re=0,t.I=0,113==n?-3:0}function Rt(e,t){let n,r,i=e.pe,f=e.ae,_=e.he,l=e.me,o=e.ae>ye(e)?e.ae-ye(e):0,u=e.J,a=e.F,c=e.u,s=e.ce,h=ee<s?ee:s,d=c[f],w=c[f+1],b=c[f+_-1],v=c[f+_];_>=e.ge&&(i>>=2),l>s&&(l=s);do{if(n=t,c[n+_]!=v||c[n+_-1]!=b||c[n]!=d||c[n+1]!=w)continue;let i=2;for(;i<h&&c[f+i]==c[n+i];)i++;if(r=i,r>_){if(e.Se=t,_=r,r>=l)break;b=c[f+_-1],v=c[f+_];}}while((t=u[t&a])>o&&0!=--i);return _<=s?_:s}function zt(e,t){wt(e,e.u,e.ae-e.ue,t,e.ue),e.ue=e.ae,q(e.o);}function j(e,t){return zt(e,t?1:0),0==e.o.avail_out?t?2:0:null}var Dt=65535;function ke(e,t){return e<t?e:t}function Lt(e,t){let n,r,i,f=ke(e.ne-5,e.h),_=0,l=e.o.avail_in;do{if(n=Dt,i=e.T+42>>3,e.o.avail_out<i||(i=e.o.avail_out-i,r=e.ae-e.ue,n>r+e.o.avail_in&&(n=r+e.o.avail_in),n>i&&(n=i),n<f&&(0==n&&4!=t||0==t||n!=r+e.o.avail_in)))break;_=4==t&&n==r+e.o.avail_in?1:0,Pe(e,null,0,_),e.D[e.A-4]=n,e.D[e.A-3]=n>>8,e.D[e.A-2]=~n,e.D[e.A-1]=~n>>8,q(e.o),r&&(r>n&&(r=n),M(e.o.next_out,e.o.next_out_index,e.u,e.ue,r),e.o.next_out_index+=r,e.o.avail_out-=r,e.o.total_out+=r,e.ue+=r,n-=r),n&&(H_(e.o,e.o.next_out,e.o.next_out_index,n),e.o.next_out_index+=n,e.o.avail_out-=n,e.o.total_out+=n);}while(0==_);if(l-=e.o.avail_in,l){if(l>=e.h){e._e=2;let t=e.o.next_in_index-e.h;M(e.u,0,e.o.next_in,t,e.h),e.ae=e.h,e.le=e.ae;}else e.qe-e.ae<=l&&(e.ae-=e.h,M(e.u,0,e.u,e.h,e.ae),e._e<2&&e._e++,e.le>e.ae&&(e.le=e.ae)),M(e.u,e.ae,e.o.next_in,e.o.next_in_index-l,l),e.ae+=l,e.le+=ke(l,e.h-e.le);e.ue=e.ae;}return e.k<e.ae&&(e.k=e.ae),_?(e.Ce=8,3):0!=t&&4!=t&&0==e.o.avail_in&&e.ae==e.ue?1:(i=e.qe-e.ae,e.o.avail_in>i&&e.ue>=e.h&&(e.ue-=e.h,e.ae-=e.h,M(e.u,0,e.u,e.h,e.ae),e._e<2&&e._e++,i+=e.h,e.le>e.ae&&(e.le=e.ae)),i>e.o.avail_in&&(i=e.o.avail_in),i&&(H_(e.o,e.u,e.ae,i),e.ae+=i,e.le+=ke(i,e.h-e.le)),e.k<e.ae&&(e.k=e.ae),i=e.T+42>>3,i=ke(e.ne-i,Dt),f=ke(i,e.h),r=e.ae-e.ue,(r>=f||(r||4==t)&&0!=t&&0==e.o.avail_in&&r<=i)&&(n=ke(r,i),_=4==t&&0==e.o.avail_in&&n==r?1:0,Pe(e,e.u,n,_,e.ue),e.ue+=n,q(e.o)),_&&(e.Ce=8),_?2:0)}function U_(e,t){let n,r=false;for(;;){if(e.ce<ae){if(c_(e),e.ce<ae&&0==t)return 0;if(0==e.ce)break}if(n=0,e.ce>=v&&(n=u_(e,e.ae)),0!=n&&e.ae-n<=ye(e)&&(e.se=Rt(e,n)),e.se>=v)if(e.ae,e.Se,e.se,r=e_(e,e.ae-e.Se,e.se-v),e.ce-=e.se,e.se<=e.xe&&e.ce>=v){e.se--;do{e.ae++,n=u_(e,e.ae);}while(0!=--e.se);e.ae++;}else e.ae+=e.se,e.se=0,e.be=e.u[e.ae],e.be=l_(e,e.be,e.u[e.ae+1]);else r=De(e,e.u[e.ae]),e.ce--,e.ae++;if(r){let t=j(e,false);if(null!=t)return t}}if(e.le=e.ae<v-1?e.ae:v-1,4==t){let t=j(e,true);return null!=t?t:3}if(e.H){let t=j(e,false);if(null!=t)return t}return 1}function Ne(e,t){let n,r=false;for(;;){if(e.ce<ae){if(c_(e),e.ce<ae&&0==t)return 0;if(0==e.ce)break}if(n=0,e.ce>=v&&(n=u_(e,e.ae)),e.he=e.se,e.de=e.Se,e.se=v-1,0!=n&&e.he<e.xe&&e.ae-n<=ye(e)&&(e.se=Rt(e,n),e.se<=5&&(1==e.ke||e.se==v&&e.ae-e.Se>nt)&&(e.se=v-1)),e.he>=v&&e.se<=e.he){let t=e.ae+e.ce-v;e.ae,e.de,e.he,r=e_(e,e.ae-1-e.de,e.he-v),e.ce-=e.he-1,e.he-=2;do{++e.ae<=t&&(n=u_(e,e.ae));}while(0!=--e.he);if(e.we=0,e.se=v-1,e.ae++,r){let t=j(e,false);if(null!=t)return t}}else if(e.we){if(r=De(e,e.u[e.ae-1]),r&&zt(e,0),e.ae++,e.ce--,0==e.o.avail_out)return 0}else e.we=1,e.ae++,e.ce--;}if(e.we&&(r=De(e,e.u[e.ae-1]),e.we=0),e.le=e.ae<v-1?e.ae:v-1,4==t){let t=j(e,true);return null!=t?t:3}if(e.H){let t=j(e,false);if(null!=t)return t}return 1}function Zn(e,t){let n,r,i,f;for(;;){if(e.ce<=ee){if(c_(e),e.ce<=ee&&0==t)return 0;if(0==e.ce)break}if(e.se=0,e.ce>=v&&e.ae>0&&(i=e.ae-1,r=e.u[i],r==++i&&r==++i&&r==++i)){f=e.ae+ee;do{}while(r==++i&&r==++i&&r==++i&&r==++i&&r==++i&&r==++i&&r==++i&&r==++i&&i<f);e.se=ee-(f-i),e.se>e.ce&&(e.se=e.ce);}if(e.se>=v?(e.ae,e.ae,e.se,n=e_(e,1,e.se-v),e.ce-=e.se,e.ae+=e.se,e.se=0):(n=De(e,e.u[e.ae]),e.ce--,e.ae++),n){let t=j(e,false);if(null!=t)return t}}if(e.le=0,4==t){let t=j(e,true);return null!=t?t:3}if(e.H){let t=j(e,false);if(null!=t)return t}return 1}function Pn(e,t){let n=false;for(;;){if(0==e.ce&&(c_(e),0==e.ce)){if(0==t)return 0;break}if(e.se=0,n=De(e,e.u[e.ae]),e.ce--,e.ae++,n){let t=j(e,false);if(null!=t)return t}}if(e.le=0,4==t){let t=j(e,true);return null!=t?t:3}if(e.H){let t=j(e,false);if(null!=t)return t}return 1}var ue=852,d_=592,m_=594,Ot=Ee.map(e=>e+1),Ct=ge.subarray(0,-1).map(e=>e+3),Mn=[16,1,73,1,200,1],Yn=[144,1,72,1,78,1],Ut=Se.map(qt),Ht=Se.map(Vt);Ut.push(64,2),Ht.push(142,2);var Bt=de.slice(0,-2).map(qt),Ft=de.slice(0,-2).map(Vt);Bt.push(...Mn),Ft.push(...Yn);var Zt=new g([...Ct,258,0,0]),Pt=new g([...Ct,3,0,0]),Mt=te(Bt),Yt=te(Ft),Xt=new g([...Ot,0,0]),Wt=new g([...Ot,32769,49153]),Gt=te(Ut),Kt=te(Ht);function qt(e,t){return t%2?e:e+16}function Vt(e,t){return t%2?e:e+128}function Jt(e,t){let n,r=e.l,i=e.next_in_index,f=e.next_out_index,_=e.next_in,l=e.next_out,o=r.u,u=r.p>>>0,a=r.T>>>0,c=r.et,s=r.tt,h=(1<<r.nt)-1,d=(1<<r.rt)-1,w=r.h>>>0,b=r.k>>>0,v=r.m>>>0,k=r.it,g=f-(t-e.avail_out),m=f+(e.avail_out-257),p=i+(e.avail_in-5),x=0,T=0,y=0,z=0;e:do{for(;a<15;){if(!(i<_.length))break e;u+=_[i++]<<a,a+=8;}n=c[u&h];t:for(;;){if(y=n>>>16&255,u>>>=y,a-=y,y=n>>>24,0==y){l[f++]=65535&n;break}if(16&y){if(x=65535&n,y&=15,y){for(;a<y;){if(!(i<_.length)){r.ft=16200;break e}u+=_[i++]<<a,a+=8;}x+=u&(1<<y)-1,u>>>=y,a-=y;}for(;a<15;){if(!(i<_.length)){r.ft=16200;break e}u+=_[i++]<<a,a+=8;}n=s[u&d];n:for(;;){if(y=n>>>16&255,u>>>=y,a-=y,y=n>>>24,16&y){if(T=65535&n,y&=15,y){for(;a<y;){if(!(i<_.length)){r.ft=16200;break e}u+=_[i++]<<a,a+=8;}T+=u&(1<<y)-1,u>>>=y,a-=y;}let t=x,c=f-g;if(T>c){let n=T-c;if(n>b&&k){e.msg="invalid distance too far back",r.ft=16209;break e}if(0==v){if(z=w-n,!(n<t)){for(let e=0;e<t;++e)l[f++]=o[z++];continue e}for(let e=0;e<n;++e)l[f++]=o[z++];t-=n,z=f-T;}else if(v<n){z=w+v-n;let e=n-v;if(!(e<t)){for(let e=0;e<t;++e)l[f++]=o[z++];continue e}for(let t=0;t<e;++t)l[f++]=o[z++];if(t-=e,z=0,v<t){for(let e=0;e<v;++e)l[f++]=o[z++];t-=v,z=f-T;}}else {if(z=v-n,!(n<t)){for(let e=0;e<t;++e)l[f++]=o[z++];continue e}for(let e=0;e<n;++e)l[f++]=o[z++];t-=n,z=f-T;}for(;t>2;)l[f++]=l[z++],l[f++]=l[z++],l[f++]=l[z++],t-=3;t&&(l[f++]=l[z++],t>1&&(l[f++]=l[z++]));}else {for(z=f-T;t>2;)l[f++]=l[z++],l[f++]=l[z++],l[f++]=l[z++],t-=3;t&&(l[f++]=l[z++],t>1&&(l[f++]=l[z++]));}break}if(64&y){e.msg="invalid distance code",r.ft=16209;break e}n=s[(65535&n)+(u&(1<<y)-1)];continue n}break}if(64&y){if(32&y){r.ft=16191;break e}e.msg="invalid literal/length code",r.ft=16209;break e}n=c[(65535&n)+(u&(1<<y)-1)];continue t}}while(i<p&&f<m);let M=a>>3;i-=M,a-=M<<3,u&=(1<<a)-1,e.next_in_index=i,e.next_out_index=f,e.avail_in=i<p?p-i+5:5-(i-p),e.avail_out=f<m?m-f+257:257-(f-m),r.p=u>>>0,r.T=a>>>0;}var Xn=new R(0);function M_(e,t){let n=Xn,r=t?ue+m_:ue+d_;return {...Je(e,0),o:e,ft:16180,_t:false,P:0,lt:false,ot:0,ut:0,ct:0,st:0,u:Z,ht:0,dt:0,Ge:0,et:n,tt:n,nt:0,rt:0,wt:0,bt:0,vt:0,kt:0,gt:n,xt:new g(320),Tt:new g(288),yt:new R(r),zt:0,it:true,Mt:0,Ct:0,Zt:t}}function We(e,t,n){return e<<24|t<<16|n}function b_(e=0,t=0,n=0){return We(e,t,n)}function h_(e=1){return We(64,e,0)}function Qt(e=0){return We(96,e,0)}function Y_(e){return (255&e)<<24|(e>>8&255)<<16|(e>>16&255)<<8|e>>24&255}var Le=15,Gn={Zt:false,Wt:Zt,qt:Mt,St:Xt,Lt:Gt,$t:20,Dt:257,At:0,It:d_,Ht:false,Qt:true},Kn={Zt:true,Wt:Pt,qt:Yt,St:Wt,Lt:Kt,$t:19,Dt:256,At:-1,It:m_,Ht:true,Qt:false};function Oe(e,t,n,r,i,f,_,l){let o,u,a,c,s,h,d,w,b,v,k,m,p,x,T,y,z,M,C,Z=new g(Le+1),W=new g(Le+1),q=l?Kn:Gn;for(o=0;o<=Le;o++)Z[o]=0;for(u=0;u<n;u++)Z[t[u]]++;for(s=i.jt,c=Le;c>=1&&0==Z[c];c--);if(s>c&&(s=c),0==c)return q.Qt?(T=h_(1),r.jt[0]=T,r.jt[1]=T,i.jt=1,0):-1;for(a=1;a<c&&0==Z[a];a++);for(s<a&&(s=a),w=1,o=1;o<=Le;o++)if(w<<=1,w-=Z[o],w<0)return -1;if(w>0&&(0==e||1!=c))return -1;for(W[1]=0,o=1;o<Le;o++)W[o+1]=W[o]+Z[o];for(u=0;u<n;u++)0!=t[u]&&(f[W[t[u]]++]=u);switch(e){case 0:z=M=f,C=q.$t;break;case 1:z=q.Wt,M=q.qt,C=q.Dt;break;default:z=q.St,M=q.Lt,C=q.At;}if(v=0,u=0,o=a,y=_.jt,h=s,d=0,p=-1,b=1<<s,x=b-1,1==e&&(q.Ht?b>=ue:b>ue)||2==e&&(q.Ht?b>=q.It:b>q.It))return 1;for(;;){T=qn(f,u,o,d,e,z,M,C,q.Zt),k=1<<o-d,m=1<<h,a=m;do{m-=k;let e=(v>>d)+m;r.jt[y+e]=T;}while(0!=m);for(k=1<<o-1;v&k;)k>>=1;if(0!=k?(v&=k-1,v+=k):v=0,u++,0==--Z[o]){if(o==c)break;o=t[f[u]];}if(o>s&&(v&x)!=p){for(0==d&&(d=s),y+=1<<h,h=o-d,w=1<<h;h+d<c&&(w-=Z[h+d],!(w<=0));)h++,w<<=1;if(b+=1<<h,1==e&&(q.Ht?b>=ue:b>ue)||2==e&&(q.Ht?b>=q.It:b>q.It))return 1;p=v&x,r.jt[_.jt+p]=We(h,s,y-_.jt);}}if(0!=v)for(T=h_(o-d);0!=v;){for(0!=d&&(v&x)!=p&&(d=0,o=s,y=_.jt,h=s,T=h_(o)),r.jt[y+(v>>d)]=T,k=1<<o-1;v&k;)k>>=1;0!=k?(v&=k-1,v+=k):v=0;}return _.jt+=b,i.jt=s,0}function qn(e,t,n,r,i,f,_,l,o){let u;if(o?e[t]<l:e[t]+1<l)u=b_(0,n-r,e[t]);else if(o?e[t]>l:e[t]>=l)if(o&&1==i){let i=e[t]-257;u=b_(_[i],n-r,f[i]);}else {let i=o?e[t]:e[t]-l;u=b_(_[i],n-r,f[i]);}else u=Qt(n-r);return u}var p_=new R(0),Qn={Nt:true,Ut:new R(544),Rt:p_,Yt:p_},$n={Nt:true,Ut:new R(544),Rt:p_,Yt:p_};function $t(){let e=je();return e.l=M_(e,false),e}function Ge(e){let t;return !(e&&(t=e.l,!(!t||t.o!=e||t.Zt&&(t.ft<16191||t.ft>16209)||!t.Zt&&(t.ft<16180||t.ft>16211))))}function er(e){let t;return Ge(e)?-2:(t=e.l,e.total_in=e.total_out=t.st=0,e.msg="",t.P&&(e.i=1&t.P),t.ft=t.Zt?16191:16180,t._t=false,t.lt=false,t.ot=-1,t.ut=t.Zt?65536:32768,delete t.B,t.p=0,t.T=0,t.et=t.yt,t.tt=t.yt,t.gt=t.yt,t.it=true,t.Mt=-1,0)}function _r(e){let t;return Ge(e)?-2:(t=e.l,t.h=0,t.k=0,t.m=0,er(e))}function tr(e,t){let n,r;if(Ge(e))return -2;if(r=e.l,t<0){if(t<-16)return -2;n=0,r.Zt=-16==t,t=-t;}else n=5+(t>>4),r.Zt=false,t<48&&(t&=15);let i=r.Zt?16:15;return t&&(t<8||t>i)?-2:(r.u.length>0&&r.v!=t&&(r.u=Z),r.P=n,r.v=t,_r(e))}function en(e,t){let n,r;if(!e)return -2;e.msg="";let i=-16==t;return r=M_(e,i),e.l=r,r.o=e,r.ft=i?16191:16180,n=tr(e,t),n}function nr(e){let t=e.Zt?$n:Qn,n={jt:0};if(t.Nt){let r,i,f;for(r=0;r<144;)e.xt[r++]=8;for(;r<256;)e.xt[r++]=9;for(;r<280;)e.xt[r++]=7;for(;r<288;)e.xt[r++]=8;t.Ut.fill(0),f=t.Ut,t.Rt=f,i=9;let _={jt:f},l={jt:i},o={jt:0};for(Oe(1,e.xt,288,_,l,e.Tt,o,e.Zt),f=_.jt,i=l.jt,e.zt=o.jt,r=0;r<32;)e.xt[r++]=5;i=5;let u=o.jt,a={jt:f},c={jt:i};n.jt=u,Oe(2,e.xt,32,a,c,e.Tt,n,e.Zt),t.Yt=f.slice(u),t.Nt=false;}e.et=t.Rt,e.nt=9,e.tt=t.Yt,e.rt=5,e.zt=n.jt;}function rr(e,t,n){let r=e.l;if(!(r.u&&0!=r.u.length||(r.u=new p(1<<r.v),r.u)))return 1;if(0==r.h&&(r.h=1<<r.v,r.m=0,r.k=0),n>=r.h)M(r.u,0,t,t.length-r.h,r.h),r.m=0,r.k=r.h;else {let e=r.h-r.m;e>n&&(e=n),M(r.u,r.m,t,t.length-n,e),(n-=e)?(M(r.u,0,t,t.length-n,n),r.m=n,r.k=r.h):(r.m+=e,r.m==r.h&&(r.m=0),r.k<r.h&&(r.k+=e));}return 0}var S_=class extends L{constructor(){super("Need more input");}};function _n(e,t){let n,r,i,f,_,l,o,u,a,c,s,h,d,w,b,v,k,g=new p(4);if(Ge(e)||!e.next_out||!e.next_in&&0!=e.avail_in)return -2;l=0,u=0,o=0,a=0,r=Z,i=0,f=Z,_=0,n=e.l,16191==n.ft&&(n.ft=16192),z(),c=l,s=o,k=0;try{for(;;)switch(n.ft){case 16180:if(0==n.P){n.ft=16192;break}if(L(16),2&n.P&&35615==u){0==n.v&&(n.v=15),n.ct=W(0),n.ct=T(n.ct,u),q(),n.ft=16181;break}if(n.B&&(n.B.Et=-1),!(1&n.P)||(($(8)<<8)+(u>>8))%31){e.msg="incorrect header check",n.ft=16209;break}if(8!=$(4)){e.msg="unknown compression method",n.ft=16209;break}if(D(4),v=$(4)+8,0==n.v&&(n.v=v),v>15||v>n.v){e.msg="invalid window size",n.ft=16209;break}n.ut=1<<v,n.ot=0,e.i=n.ct=he(0),n.ft=512&u?16189:16191,q();break;case 16181:if(L(16),n.ot=u,8!=(255&n.ot)){e.msg="unknown compression method",n.ft=16209;break}if(57344&n.ot){e.msg="unknown header flags set",n.ft=16209;break}n.B&&(n.B.Fe=u>>8&1),512&n.ot&&4&n.P&&(n.ct=T(n.ct,u)),q(),n.ft=16182;case 16182:L(32),n.B&&(n.B.Xe=u),512&n.ot&&4&n.P&&(n.ct=y(n.ct,u)),q(),n.ft=16183;case 16183:L(16),n.B&&(n.B.Pt=255&u,n.B.Je=u>>8),512&n.ot&&4&n.P&&(n.ct=T(n.ct,u)),q(),n.ft=16184;case 16184:1024&n.ot?(L(16),n.ht=u,n.B&&(n.B.Ke=u),512&n.ot&&4&n.P&&(n.ct=T(n.ct,u)),q()):n.B&&(n.B.Ge=Z),n.ft=16185;case 16185:if(1024&n.ot&&(h=n.ht,h>l&&(h=l),h&&(n.B&&n.B.Ge&&n.B.Bt&&(v=n.B.Ke-n.ht)<n.B.Bt&&M(n.B.Ge,v,r,i,h),512&n.ot&&4&n.P&&(n.ct=W(n.ct,r.subarray(i,i+h),h)),l-=h,i+=h,n.ht-=h),n.ht))return m();n.ht=0,n.ft=16186;case 16186:if(2048&n.ot){if(0==l)return m();h=0;do{v=r[i+h++],n.B&&n.B.Ft&&n.ht<n.B.Ft&&(n.B.Oe[n.ht++]=v);}while(v&&h<l);if(512&n.ot&&4&n.P&&(n.ct=W(n.ct,r.subarray(i,i+h),h)),l-=h,i+=h,v)return m()}else n.B&&(n.B.Oe=Z);n.ht=0,n.ft=16187;case 16187:if(4096&n.ot){if(0==l)return m();h=0;do{v=r[i+h++],n.B&&n.B.Gt&&n.ht<n.B.Gt&&(n.B.Ve[n.ht++]=v);}while(v&&h<l);if(512&n.ot&&4&n.P&&(n.ct=W(n.ct,r.subarray(i,i+h),h)),l-=h,i+=h,v)return m()}else n.B&&(n.B.Ve=Z);n.ft=16188;case 16188:if(512&n.ot){if(L(16),4&n.P&&u!=(65535&n.ct)){e.msg="header crc mismatch",n.ft=16209;break}q();}n.B&&(n.B.Be=n.ot>>9&1,n.B.Et=1),e.i=n.ct=W(0),n.ft=16191;break;case 16189:L(32),e.i=n.ct=Y_(u),q(),n.ft=16190;case 16190:if(!n.lt)return C(),2;e.i=n.ct=he(0),n.ft=16191;case 16191:if(5==t||6==t)return m();case 16192:if(n._t){A(),n.ft=16206;break}switch(L(3),n._t=!!$(1),D(1),$(2)){case 0:n.ft=16193;break;case 1:if(nr(n),n.ft=16199,6==t)return D(2),m();break;case 2:n.ft=16196;break;case 3:e.msg="invalid block type",n.ft=16209;}D(2);break;case 16193:if(A(),L(32),(65535&u)!=(u>>>16^65535)){e.msg="invalid stored block lengths",n.ft=16209;break}if(n.ht=65535&u,q(),n.ft=16194,6==t)return m();case 16194:n.ft=16195;case 16195:if(h=n.ht,h){if(h>l&&(h=l),h>o&&(h=o),0==h)return m();M(f,_,r,i,h),l-=h,i+=h,o-=h,_+=h,n.ht-=h;break}n.ft=16191;break;case 16196:if(L(14),n.bt=$(5)+257,D(5),n.vt=$(5)+1,D(5),n.wt=$(4)+4,D(4),n.bt>286||!n.Zt&&n.vt>30){e.msg=n.Zt?"too many length":"too many length or distance symbols",n.ft=16209;break}n.kt=0,n.ft=16197;case 16197:for(;n.kt<n.wt;)L(3),n.xt[pe[n.kt++]]=$(3),D(3);for(;n.kt<19;)n.xt[pe[n.kt++]]=0;n.gt=n.yt,n.et=n.tt=n.gt,n.nt=7;let c={jt:n.gt},g={jt:n.nt},p={jt:0};if(k=Oe(0,n.xt,19,c,g,n.Tt,p,n.Zt),n.gt=c.jt,n.nt=g.jt,k){e.msg="invalid code lengths set",n.ft=16209;break}n.kt=0,n.ft=16198;case 16198:for(;n.kt<n.bt+n.vt;){for(;w=n.et[$(n.nt)],!((w>>>16&255)<=a);)S();if((65535&w)<16)D(w>>>16&255),n.xt[n.kt++]=65535&w;else {if(16==(65535&w)){if(L(2+(w>>>16&255)),D(w>>>16&255),0==n.kt){e.msg="invalid bit length repeat",n.ft=16209;break}v=n.xt[n.kt-1],h=3+$(2),D(2);}else 17==(65535&w)?(L(3+(w>>>16&255)),D(w>>>16&255),v=0,h=3+$(3),D(3)):(L(7+(w>>>16&255)),D(w>>>16&255),v=0,h=11+$(7),D(7));if(n.kt+h>n.bt+n.vt){e.msg="invalid bit length repeat",n.ft=16209;break}for(;h--;)n.xt[n.kt++]=v;}}if(16209==n.ft)break;if(0==n.xt[256]){e.msg="invalid code -- missing end-of-block",n.ft=16209;break}n.gt=n.yt,n.nt=9;let I={jt:n.gt},H={jt:n.nt},Q={jt:0};k=Oe(1,n.xt,n.bt,I,H,n.Tt,Q,n.Zt),n.gt=I.jt,n.nt=H.jt;let j=Q.jt;if(n.et=n.gt.slice(0,j),k){e.msg="invalid literal/lengths set",n.ft=16209;break}n.rt=6;let N=n.xt.subarray(n.bt,n.bt+n.vt),U={jt:n.gt},R={jt:n.rt},Y={jt:j};if(k=Oe(2,N,n.vt,U,R,n.Tt,Y,n.Zt),n.gt=U.jt,n.rt=R.jt,n.tt=n.gt.slice(j),k){e.msg="invalid distances set",n.ft=16209;break}if(n.ft=16199,6==t)return m();case 16199:n.ft=16200;case 16200:if(!n.Zt&&l>=6&&o>=258){C(),Jt(e,s),z(),16191==n.ft&&(n.Mt=-1);break}for(n.Mt=0;w=n.et[$(n.nt)],!((w>>>16&255)<=a);)S();if(w>>>24&&!(w>>>24&240)){for(b=w;w=n.et[(65535&b)+($((b>>>16&255)+(b>>>24))>>(b>>>16&255))],!((b>>>16&255)+(w>>>16&255)<=a);)S();D(b>>>16&255),n.Mt+=b>>>16&255;}if(D(w>>>16&255),n.Mt+=w>>>16&255,n.ht=65535&w,!(w>>>24)){n.ft=16205;break}if(w>>>24&32){n.Mt=-1,n.ft=16191;break}if(w>>>24&64){e.msg="invalid literal/length code",n.ft=16209;break}n.Ge=w>>>24&(n.Zt?31:15),n.ft=16201;case 16201:n.Ge&&(L(n.Ge),n.ht+=$(n.Ge),D(n.Ge),n.Mt+=n.Ge),n.Ct=n.ht,n.ft=16202;case 16202:for(;w=n.tt[$(n.rt)],!((w>>>16&255)<=a);)S();if(!(w>>>24&240)){for(b=w;w=n.tt[(65535&b)+($((b>>>16&255)+(b>>>24))>>(b>>>16&255))],!((b>>>16&255)+(w>>>16&255)<=a);)S();D(b>>>16&255),n.Mt+=b>>>16&255;}if(D(w>>>16&255),n.Mt+=w>>>16&255,w>>>24&64){e.msg="invalid distance code",n.ft=16209;break}n.dt=65535&w,n.Ge=w>>>24&15,n.ft=16203;case 16203:n.Ge&&(L(n.Ge),n.dt+=$(n.Ge),D(n.Ge),n.Mt+=n.Ge),n.ft=16204;case 16204:if(0==o)return m();if(h=s-o,n.dt>h){if(h=n.dt-h,h>n.k&&n.it){e.msg="invalid distance too far back",n.ft=16209;break}h>n.m?(h-=n.m,d=n.h-h):d=n.m-h,h>n.ht&&(h=n.ht),h>o&&(h=o);for(let e=0;e<h;++e)f[_]=255&n.u[d],++_,++d;}else {d=_-n.dt,h=n.ht,h>o&&(h=o);for(let e=0;e<h;++e)f[_]=f[d],++_,++d;}h>o&&(h=o),o-=h,n.ht-=h,0==n.ht&&(n.ft=16200);break;case 16205:if(0==o)return m();f[_++]=n.ht,o--,n.ft=16200;break;case 16206:if(n.P){if(L(32),s-=o,e.total_out+=s,n.st+=s,4&n.P&&s){let t=f.subarray(_-s,_);e.i=n.ct=x(n.ct,t,s);}if(s=o,4&n.P&&(n.ot?u:Y_(u)>>>0)!=n.ct){e.msg="incorrect data check",n.ft=16209;break}q();}n.ft=16207;case 16207:if(n.P&&n.ot){if(L(32),4&n.P&&u!=(4294967295&n.st)){e.msg="incorrect length check",n.ft=16209;break}q();}n.ft=16208;case 16208:return k=1,m();case 16209:return k=-3,m();case 16210:return -4;default:return -2}}catch(e){if(e instanceof S_)return m();throw e}function m(){if(C(),n.h||s!=e.avail_out&&n.ft<16209&&(n.Zt?n.ft<16208:n.ft<16206)||4!=t){let t=s-e.avail_out;if(rr(e,e.next_out.subarray(e.next_out_index-t,e.next_out_index),t))return n.ft=16210,-4}return c-=e.avail_in,s-=e.avail_out,e.total_in+=c,e.total_out+=s,n.st+=s,4&n.P&&s&&(e.i=n.ct=x(n.ct,e.next_out.subarray(e.next_out_index-s,e.next_out_index),s)),e.t=n.T+(n._t?64:0)+(16191==n.ft?128:0)+(16199==n.ft||16194==n.ft?256:0),(0==c&&0==s&&0==k||4==t&&0==k)&&(k=-5),k}function x(e,t,r){return n.ot?W(e,t,r):he(e,t,r)}function T(e,t){return g[0]=255&t,g[1]=t>>>8&255,W(e,g,2)>>>0}function y(e,t){return g[0]=255&t,g[1]=t>>>8&255,g[2]=t>>>16&255,g[3]=t>>>24&255,W(e,g,4)>>>0}function z(){f=e.next_out,_=e.next_out_index,o=e.avail_out,r=e.next_in,i=e.next_in_index,l=e.avail_in,u=n.p,a=n.T;}function C(){e.next_out=f,e.next_out_index=_,e.avail_out=o,e.next_in=r,e.next_in_index=i,e.avail_in=l,n.p=u,n.T=a;}function q(){u=0,a=0;}function S(){if(0==l)throw new S_;l--,u+=(255&r[i])<<a,i++,u>>>=0,a+=8;}function L(e){for(;a<e;)S();}function $(e){return u&(1<<e)-1}function D(e){u>>>=e,a-=e;}function A(){u>>>=7&a,a-=7&a;}}function tn(e){return Ge(e)?-2:0}var X_=65536,ar=32768,W_=class{constructor(e=16,t=X_){this.Ot=[],this.Vt=e;for(let n=0;n<z.min(e,4);n++)this.Ot.push(new p(t));}acquire(e=X_){for(let t=this.Ot.length-1;t>=0;t--){let n=this.Ot[t];if(n.length>=e)return this.Ot.splice(t,1),n}return new p(e)}release(e){this.Ot.length<this.Vt&&this.Ot.push(e);}};function nn(e){let t=new W_(32,X_),n=null;function r(){let t=e.Xt(),n=e.Jt(t);if(0!=n&&0!=n)throw new L("init failed: "+n);return {o:t}}function i(e){try{t.release(e);}catch{}}return new H({start(){},transform(f,_){n||(n=r());let l=n.o;if(n.Kt)return;let o=0;for(;o<f.length;){let r=z.min(f.length-o,ar),u=f.subarray(o,o+r);for(l.next_in=u,l.next_in_index=0,l.avail_in=u.length;l.avail_in>0;){let r=t.acquire(),f=false;try{l.next_out=r,l.next_out_index=0,l.avail_out=r.length;let i=e.en(l,0),o=r.length-l.avail_out;if(o>0){let e=!1,n={tn:r.subarray(0,o),release:()=>{e||(e=!0,t.release(r));}};f=!0,_.enqueue(n);}if(1==i){n.Kt=!0;break}if(0!=i)throw new L("process error: "+i)}finally{f||i(r);}}if(n.Kt)break;o+=r;}},flush(f){if(n&&n.Kt)return;n||(n=r());let _=n.o;for(;;){let n=t.acquire(),r=false;try{_.next_out=n,_.next_out_index=0,_.avail_out=n.length;let i=e.en(_,4),l=n.length-_.avail_out;if(l>0){let e=!1,i={tn:n.subarray(0,l),release:()=>{e||(e=!0,t.release(n));}};r=!0,f.enqueue(i);}if(1==i)break;if(0!=i)throw new L("finalization error: "+i)}finally{r||i(n);}}let l=e.nn(_);if(0!=l&&0!=l)throw new L("end failed: "+l)}})}function rn(){return new H({start(){},transform(e,t){try{t.enqueue(e.tn.slice(0));}finally{e.release();}},flush(){}})}function ir(e="deflate",t){let n="gzip"==e?31:"deflate-raw"==e?-15:15,r=t&&"number"==typeof t.level?t.level:-1;return nn({Xt:()=>vt(),Jt:e=>kt(e,r,8,n,8,0),en:Nt,nn:P_})}function or(e="deflate"){let t="gzip"==e?31:"deflate-raw"==e?-15:"deflate64-raw"==e?-16:15;return nn({Xt:()=>$t(),Jt:e=>en(e,t),en:_n,nn:tn})}var E_=class{constructor(e="deflate",t){let n=ir(e,t);this.writable=n.writable,this.readable=n.readable.pipeThrough(rn());}},g_=class{constructor(e="deflate"){let t=or(e);this.writable=t.writable,this.readable=t.readable.pipeThrough(rn());}};
|
|
8017
8163
|
|
|
8018
8164
|
/*
|
|
8019
8165
|
Copyright (c) 2025 Gildas Lormeau. All rights reserved.
|
|
@@ -8082,6 +8228,7 @@ setDefaultConfiguration({
|
|
|
8082
8228
|
|
|
8083
8229
|
const ERR_ENTRY_EXISTS = "Entry filename already exists";
|
|
8084
8230
|
const ERR_READABLE_CONSUMED = "Readable stream already consumed";
|
|
8231
|
+
const ERR_ABORT_EXPORT = "zipjs-abort-export";
|
|
8085
8232
|
const INFOZIP_EXTRA_FIELD_TYPE = "infozip";
|
|
8086
8233
|
const INTERPRETED_EXTRA_FIELD_TYPES = new Set([
|
|
8087
8234
|
EXTRAFIELD_TYPE_ZIP64,
|
|
@@ -8190,8 +8337,9 @@ class ZipFileEntry extends ZipEntry {
|
|
|
8190
8337
|
const uncompressedSize = zipEntry.data ? zipEntry.data.uncompressedSize : reader.size;
|
|
8191
8338
|
await Promise.all([initStream(reader), initStream(writer, uncompressedSize)]);
|
|
8192
8339
|
const { readable } = reader;
|
|
8340
|
+
const { signal } = options;
|
|
8193
8341
|
zipEntry.uncompressedSize = reader.size;
|
|
8194
|
-
await toCompatibleReadable(readable).pipeTo(toCompatibleWritable(writer.writable));
|
|
8342
|
+
await toCompatibleReadable(readable).pipeTo(toCompatibleWritable(writer.writable), { signal });
|
|
8195
8343
|
return writer.getData ? writer.getData() : writer.writable;
|
|
8196
8344
|
}
|
|
8197
8345
|
}
|
|
@@ -8458,7 +8606,7 @@ class ZipDirectoryEntry extends ZipEntry {
|
|
|
8458
8606
|
for (const entry of entries) {
|
|
8459
8607
|
let parent = this;
|
|
8460
8608
|
try {
|
|
8461
|
-
const path = entry.filename.split("/");
|
|
8609
|
+
const path = entry.filename.split("/").filter(pathPart => pathPart != "" && pathPart != ".");
|
|
8462
8610
|
const name = path.pop();
|
|
8463
8611
|
path.forEach(pathPart => {
|
|
8464
8612
|
const previousParent = parent;
|
|
@@ -8833,6 +8981,39 @@ function detach(entry) {
|
|
|
8833
8981
|
}
|
|
8834
8982
|
}
|
|
8835
8983
|
|
|
8984
|
+
function forwardAbort(signal, abortController) {
|
|
8985
|
+
if (!signal) {
|
|
8986
|
+
return () => { };
|
|
8987
|
+
}
|
|
8988
|
+
if (signal.aborted) {
|
|
8989
|
+
abortController.abort(signal.reason);
|
|
8990
|
+
return () => { };
|
|
8991
|
+
}
|
|
8992
|
+
const abort = () => abortController.abort(signal.reason);
|
|
8993
|
+
signal.addEventListener("abort", abort, { once: true });
|
|
8994
|
+
return () => signal.removeEventListener("abort", abort);
|
|
8995
|
+
}
|
|
8996
|
+
|
|
8997
|
+
function isExportAborted(error) {
|
|
8998
|
+
return Boolean(error) && error.message == ERR_ABORT_EXPORT;
|
|
8999
|
+
}
|
|
9000
|
+
|
|
9001
|
+
function aggregateEntryErrors(errors) {
|
|
9002
|
+
const [error] = errors;
|
|
9003
|
+
const otherErrors = errors
|
|
9004
|
+
.slice(1)
|
|
9005
|
+
.flatMap(otherError => [otherError, ...(otherError && otherError.entryErrors || [])])
|
|
9006
|
+
.filter(otherError => otherError !== error);
|
|
9007
|
+
if (otherErrors.length) {
|
|
9008
|
+
try {
|
|
9009
|
+
error.entryErrors = [...(error.entryErrors || []), ...otherErrors];
|
|
9010
|
+
} catch {
|
|
9011
|
+
// ignored
|
|
9012
|
+
}
|
|
9013
|
+
}
|
|
9014
|
+
return error;
|
|
9015
|
+
}
|
|
9016
|
+
|
|
8836
9017
|
function getUserExtraField(extraField) {
|
|
8837
9018
|
if (extraField) {
|
|
8838
9019
|
const userExtraField = new Map();
|
|
@@ -8953,8 +9134,9 @@ async function exportZip(zipWriter, entry, totalSize, options, readers) {
|
|
|
8953
9134
|
function addFileSystemHandle(zipEntry, handle, options) {
|
|
8954
9135
|
return addFile(zipEntry, handle, []);
|
|
8955
9136
|
|
|
8956
|
-
async function addFile(parentEntry, handle, addedEntries) {
|
|
9137
|
+
async function addFile(parentEntry, handle, addedEntries, parentName = "") {
|
|
8957
9138
|
if (handle) {
|
|
9139
|
+
const entryName = parentName ? parentName + "/" + handle.name : handle.name;
|
|
8958
9140
|
try {
|
|
8959
9141
|
if (handle.isFile || handle.isDirectory) {
|
|
8960
9142
|
handle = await transformToFileSystemhandle(handle);
|
|
@@ -8976,12 +9158,18 @@ function addFileSystemHandle(zipEntry, handle, options) {
|
|
|
8976
9158
|
const directoryEntry = parentEntry.addDirectory(handle.name);
|
|
8977
9159
|
addedEntries.push(directoryEntry);
|
|
8978
9160
|
for await (const childHandle of handle.values()) {
|
|
8979
|
-
await addFile(directoryEntry, childHandle, addedEntries);
|
|
9161
|
+
await addFile(directoryEntry, childHandle, addedEntries, entryName);
|
|
8980
9162
|
}
|
|
8981
9163
|
}
|
|
8982
9164
|
} catch (error) {
|
|
8983
|
-
|
|
8984
|
-
|
|
9165
|
+
try {
|
|
9166
|
+
if (error.entryName === UNDEFINED_VALUE) {
|
|
9167
|
+
error.entryName = entryName;
|
|
9168
|
+
}
|
|
9169
|
+
} catch {
|
|
9170
|
+
// ignored
|
|
9171
|
+
}
|
|
9172
|
+
throw error;
|
|
8985
9173
|
}
|
|
8986
9174
|
}
|
|
8987
9175
|
return addedEntries;
|
|
@@ -8991,15 +9179,32 @@ function addFileSystemHandle(zipEntry, handle, options) {
|
|
|
8991
9179
|
async function exportFileSystemHandle(zipEntry, directoryHandle, options) {
|
|
8992
9180
|
const totalSize = getTotalSize([zipEntry], "uncompressedSize");
|
|
8993
9181
|
const writtenSizes = new Map();
|
|
8994
|
-
|
|
9182
|
+
const abortController = new AbortController();
|
|
9183
|
+
const { signal } = abortController;
|
|
9184
|
+
const releaseSignal = forwardAbort(options.signal, abortController);
|
|
9185
|
+
const exportedEntryNames = [];
|
|
9186
|
+
try {
|
|
9187
|
+
await exportChildren(zipEntry, directoryHandle);
|
|
9188
|
+
} catch (error) {
|
|
9189
|
+
try {
|
|
9190
|
+
error.exportedEntryNames = exportedEntryNames;
|
|
9191
|
+
} catch {
|
|
9192
|
+
// ignored
|
|
9193
|
+
}
|
|
9194
|
+
throw error;
|
|
9195
|
+
} finally {
|
|
9196
|
+
releaseSignal();
|
|
9197
|
+
}
|
|
8995
9198
|
return directoryHandle;
|
|
8996
9199
|
|
|
8997
9200
|
async function exportChildren(entry, parentHandle) {
|
|
8998
9201
|
if (options.concurrent) {
|
|
8999
9202
|
const results = await Promise.allSettled(entry.children.map(child => exportChild(child, parentHandle)));
|
|
9000
|
-
const
|
|
9001
|
-
if (
|
|
9002
|
-
|
|
9203
|
+
const rejectedResults = results.filter(result => result.status == "rejected");
|
|
9204
|
+
if (rejectedResults.length) {
|
|
9205
|
+
const failedResults = rejectedResults.filter(result => !isExportAborted(result.reason));
|
|
9206
|
+
const reportedResults = failedResults.length ? failedResults : rejectedResults;
|
|
9207
|
+
throw aggregateEntryErrors(reportedResults.map(result => result.reason));
|
|
9003
9208
|
}
|
|
9004
9209
|
} else {
|
|
9005
9210
|
for (const child of entry.children) {
|
|
@@ -9009,6 +9214,12 @@ async function exportFileSystemHandle(zipEntry, directoryHandle, options) {
|
|
|
9009
9214
|
}
|
|
9010
9215
|
|
|
9011
9216
|
async function exportChild(child, parentHandle) {
|
|
9217
|
+
if (signal.aborted) {
|
|
9218
|
+
if (isExportAborted(signal.reason)) {
|
|
9219
|
+
return;
|
|
9220
|
+
}
|
|
9221
|
+
throw signal.reason;
|
|
9222
|
+
}
|
|
9012
9223
|
try {
|
|
9013
9224
|
if (child.directory) {
|
|
9014
9225
|
const childDirectoryHandle = await parentHandle.getDirectoryHandle(child.name, { create: true });
|
|
@@ -9017,6 +9228,7 @@ async function exportFileSystemHandle(zipEntry, directoryHandle, options) {
|
|
|
9017
9228
|
const fileHandle = await parentHandle.getFileHandle(child.name, { create: true });
|
|
9018
9229
|
const writable = await fileHandle.createWritable();
|
|
9019
9230
|
await child.getData({ writable }, Object.assign({}, options, {
|
|
9231
|
+
signal,
|
|
9020
9232
|
onprogress: async progress => {
|
|
9021
9233
|
if (options.onprogress) {
|
|
9022
9234
|
writtenSizes.set(child.id, progress);
|
|
@@ -9028,9 +9240,19 @@ async function exportFileSystemHandle(zipEntry, directoryHandle, options) {
|
|
|
9028
9240
|
}
|
|
9029
9241
|
}
|
|
9030
9242
|
}));
|
|
9243
|
+
exportedEntryNames.push(child.getRelativeName(zipEntry));
|
|
9031
9244
|
}
|
|
9032
9245
|
} catch (error) {
|
|
9033
|
-
|
|
9246
|
+
abortController.abort(new Error(ERR_ABORT_EXPORT));
|
|
9247
|
+
try {
|
|
9248
|
+
if (error.entryName === UNDEFINED_VALUE) {
|
|
9249
|
+
error.entryName = child.getRelativeName(zipEntry);
|
|
9250
|
+
error.entryId = child.id;
|
|
9251
|
+
}
|
|
9252
|
+
} catch {
|
|
9253
|
+
// ignored
|
|
9254
|
+
}
|
|
9255
|
+
throw error;
|
|
9034
9256
|
}
|
|
9035
9257
|
}
|
|
9036
9258
|
}
|
|
@@ -9204,7 +9426,7 @@ function decodeMimeTypes(data) {
|
|
|
9204
9426
|
*/
|
|
9205
9427
|
|
|
9206
9428
|
|
|
9207
|
-
|
|
9429
|
+
p$1(setDefaultConfiguration);
|
|
9208
9430
|
|
|
9209
9431
|
exports.BlobReader = BlobReader;
|
|
9210
9432
|
exports.BlobWriter = BlobWriter;
|
|
@@ -9233,12 +9455,17 @@ exports.ERR_INVALID_ENTRY_COMMENT = ERR_INVALID_ENTRY_COMMENT;
|
|
|
9233
9455
|
exports.ERR_INVALID_ENTRY_NAME = ERR_INVALID_ENTRY_NAME;
|
|
9234
9456
|
exports.ERR_INVALID_EXTRAFIELD_DATA = ERR_INVALID_EXTRAFIELD_DATA;
|
|
9235
9457
|
exports.ERR_INVALID_EXTRAFIELD_TYPE = ERR_INVALID_EXTRAFIELD_TYPE;
|
|
9458
|
+
exports.ERR_INVALID_FILENAME_VALIDATION = ERR_INVALID_FILENAME_VALIDATION;
|
|
9236
9459
|
exports.ERR_INVALID_GID = ERR_INVALID_GID;
|
|
9460
|
+
exports.ERR_INVALID_LEVEL = ERR_INVALID_LEVEL;
|
|
9461
|
+
exports.ERR_INVALID_MAX_APPENDED_DATA_SIZE = ERR_INVALID_MAX_APPENDED_DATA_SIZE;
|
|
9237
9462
|
exports.ERR_INVALID_MSDOS_ATTRIBUTES = ERR_INVALID_MSDOS_ATTRIBUTES;
|
|
9238
9463
|
exports.ERR_INVALID_MSDOS_DATA = ERR_INVALID_MSDOS_DATA;
|
|
9239
9464
|
exports.ERR_INVALID_PASSWORD = ERR_INVALID_PASSWORD;
|
|
9465
|
+
exports.ERR_INVALID_PASSWORD_TYPE = ERR_INVALID_PASSWORD_TYPE;
|
|
9240
9466
|
exports.ERR_INVALID_SIGNATURE = ERR_INVALID_SIGNATURE;
|
|
9241
9467
|
exports.ERR_INVALID_SIGNATURE_DATA = ERR_INVALID_SIGNATURE_DATA;
|
|
9468
|
+
exports.ERR_INVALID_STRICTNESS = ERR_INVALID_STRICTNESS;
|
|
9242
9469
|
exports.ERR_INVALID_UID = ERR_INVALID_UID;
|
|
9243
9470
|
exports.ERR_INVALID_UNCOMPRESSED_SIZE = ERR_INVALID_UNCOMPRESSED_SIZE;
|
|
9244
9471
|
exports.ERR_INVALID_UNIX_EXTRA_FIELD_TYPE = ERR_INVALID_UNIX_EXTRA_FIELD_TYPE;
|
|
@@ -9253,6 +9480,7 @@ exports.ERR_RESERVED_COMPRESSION_METHOD = ERR_RESERVED_COMPRESSION_METHOD;
|
|
|
9253
9480
|
exports.ERR_SPLIT_ZIP_FILE = ERR_SPLIT_ZIP_FILE;
|
|
9254
9481
|
exports.ERR_UNDEFINED_READER = ERR_UNDEFINED_READER;
|
|
9255
9482
|
exports.ERR_UNDEFINED_UNCOMPRESSED_SIZE = ERR_UNDEFINED_UNCOMPRESSED_SIZE;
|
|
9483
|
+
exports.ERR_UNSAFE_FILENAME = ERR_UNSAFE_FILENAME;
|
|
9256
9484
|
exports.ERR_UNSUPPORTED_COMPRESSION = ERR_UNSUPPORTED_COMPRESSION$1;
|
|
9257
9485
|
exports.ERR_UNSUPPORTED_CONTEXT = ERR_UNSUPPORTED_CONTEXT;
|
|
9258
9486
|
exports.ERR_UNSUPPORTED_CRYPTO_API = ERR_UNSUPPORTED_CRYPTO_API;
|