@zip.js/zip.js 2.8.16 → 2.8.18

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.
@@ -2682,7 +2682,10 @@
2682
2682
  */
2683
2683
 
2684
2684
 
2685
- let WEB_WORKERS_SUPPORTED;
2685
+ const MODULE_WORKER_OPTIONS = { type: "module" };
2686
+
2687
+ let webWorkerSupported, webWorkerURI, webWorkerOptions;
2688
+ let transferStreamsSupported = true;
2686
2689
  let initModule = () => { };
2687
2690
 
2688
2691
  class CodecWorker {
@@ -2726,11 +2729,11 @@
2726
2729
  onTaskFinished(workerData);
2727
2730
  }
2728
2731
  });
2729
- if (WEB_WORKERS_SUPPORTED === UNDEFINED_VALUE) {
2732
+ if (webWorkerSupported === UNDEFINED_VALUE) {
2730
2733
  // deno-lint-ignore valid-typeof
2731
- WEB_WORKERS_SUPPORTED = typeof Worker != UNDEFINED_TYPE;
2734
+ webWorkerSupported = typeof Worker != UNDEFINED_TYPE;
2732
2735
  }
2733
- return (useWebWorkers && WEB_WORKERS_SUPPORTED ? createWebWorkerInterface : createWorkerInterface)(workerData, config);
2736
+ return (useWebWorkers && webWorkerSupported ? createWebWorkerInterface : createWorkerInterface)(workerData, config);
2734
2737
  }
2735
2738
  }
2736
2739
 
@@ -2787,7 +2790,7 @@
2787
2790
  try {
2788
2791
  worker = getWebWorker(workerData.workerURI, baseURI, workerData);
2789
2792
  } catch {
2790
- WEB_WORKERS_SUPPORTED = false;
2793
+ webWorkerSupported = false;
2791
2794
  return createWorkerInterface(workerData, config);
2792
2795
  }
2793
2796
  Object.assign(workerData, {
@@ -2889,28 +2892,69 @@
2889
2892
  return { writable, closed };
2890
2893
  }
2891
2894
 
2892
- let transferStreamsSupported = true;
2893
-
2894
- function getWebWorker(url, baseURI, workerData) {
2895
- const workerOptions = { type: "module" };
2896
- let scriptUrl, worker;
2897
- // deno-lint-ignore valid-typeof
2898
- if (typeof url == FUNCTION_TYPE) {
2899
- url = url();
2900
- }
2901
- if (url.startsWith("data:") || url.startsWith("blob:")) {
2902
- try {
2903
- worker = new Worker(url);
2904
- } catch {
2905
- worker = new Worker(url, workerOptions);
2895
+ function getWebWorker(url, baseURI, workerData, isModuleType, useBlobURI = true) {
2896
+ let worker, resolvedURI, resolvedOptions;
2897
+ if (webWorkerURI === UNDEFINED_VALUE) {
2898
+ // deno-lint-ignore valid-typeof
2899
+ const isFunctionURI = typeof url == FUNCTION_TYPE;
2900
+ if (isFunctionURI) {
2901
+ resolvedURI = url(useBlobURI);
2902
+ } else {
2903
+ resolvedURI = url;
2906
2904
  }
2907
- } else {
2908
- try {
2909
- scriptUrl = new URL(url, baseURI);
2910
- } catch {
2911
- scriptUrl = url;
2905
+ const isDataURI = resolvedURI.startsWith("data:");
2906
+ const isBlobURI = resolvedURI.startsWith("blob:");
2907
+ if (isDataURI || isBlobURI) {
2908
+ if (isModuleType === UNDEFINED_VALUE) {
2909
+ isModuleType = false;
2910
+ }
2911
+ if (isModuleType) {
2912
+ resolvedOptions = MODULE_WORKER_OPTIONS;
2913
+ }
2914
+ try {
2915
+ worker = new Worker(resolvedURI, resolvedOptions);
2916
+ } catch (error) {
2917
+ if (isBlobURI) {
2918
+ try {
2919
+ URL.revokeObjectURL(resolvedURI);
2920
+ } catch {
2921
+ // ignored
2922
+ }
2923
+ }
2924
+ if (isFunctionURI && isBlobURI) {
2925
+ return getWebWorker(url, baseURI, workerData, isModuleType, false);
2926
+ } else if (!isModuleType) {
2927
+ return getWebWorker(url, baseURI, workerData, true, false);
2928
+ } else {
2929
+ throw error;
2930
+ }
2931
+ }
2932
+ } else {
2933
+ if (isModuleType === UNDEFINED_VALUE) {
2934
+ isModuleType = true;
2935
+ }
2936
+ if (isModuleType) {
2937
+ resolvedOptions = MODULE_WORKER_OPTIONS;
2938
+ }
2939
+ try {
2940
+ resolvedURI = new URL(resolvedURI, baseURI);
2941
+ } catch {
2942
+ // ignored
2943
+ }
2944
+ try {
2945
+ worker = new Worker(resolvedURI, resolvedOptions);
2946
+ } catch (error) {
2947
+ if (!isModuleType) {
2948
+ return getWebWorker(url, baseURI, workerData, false, useBlobURI);
2949
+ } else {
2950
+ throw error;
2951
+ }
2952
+ }
2912
2953
  }
2913
- worker = new Worker(scriptUrl, workerOptions);
2954
+ webWorkerURI = resolvedURI;
2955
+ webWorkerOptions = resolvedOptions;
2956
+ } else {
2957
+ worker = new Worker(webWorkerURI, webWorkerOptions);
2914
2958
  }
2915
2959
  worker.addEventListener(MESSAGE_EVENT_TYPE, event => onMessage(event, workerData));
2916
2960
  return worker;
@@ -4749,7 +4793,6 @@
4749
4793
  let writingBufferedEntryData;
4750
4794
  let writingEntryData;
4751
4795
  let fileWriter;
4752
- let blobPromise;
4753
4796
  files.set(name, fileEntry);
4754
4797
  try {
4755
4798
  let lockPreviousFileEntry;
@@ -4758,7 +4801,7 @@
4758
4801
  requestLockCurrentFileEntry();
4759
4802
  }
4760
4803
  if ((options.bufferedWrite || zipWriter.writerLocked || (zipWriter.bufferedWrites && keepOrder) || !dataDescriptor) && !usdz) {
4761
- fileWriter = new TransformStream();
4804
+ fileWriter = new TransformStream(undefined, undefined, { highWaterMark: Infinity });
4762
4805
  fileWriter.size = 0;
4763
4806
  bufferedWrite = true;
4764
4807
  zipWriter.bufferedWrites++;
@@ -4789,20 +4832,20 @@
4789
4832
  await skipDiskIfNeeded(writable);
4790
4833
  }
4791
4834
  const { diskNumber } = writer;
4792
- writingEntryData = true;
4793
4835
  fileEntry.diskNumberStart = diskNumber;
4794
- if (bufferedWrite) {
4795
- blobPromise = new Response(fileWriter.readable).blob();
4796
- } else {
4836
+ if (!bufferedWrite) {
4837
+ writingEntryData = true;
4797
4838
  await writeData(fileWriter, localHeaderArray);
4798
4839
  }
4799
4840
  fileEntry = await createFileEntry(reader, fileWriter, fileEntry, entryInfo, zipWriter.config, options);
4800
4841
  const { zip64 } = fileEntry;
4801
- writingEntryData = false;
4842
+ if (!bufferedWrite) {
4843
+ writingEntryData = false;
4844
+ }
4802
4845
  files.set(name, fileEntry);
4803
4846
  fileEntry.filename = name;
4804
4847
  if (bufferedWrite) {
4805
- const [blob] = await Promise.all([blobPromise, fileWriter.writable.getWriter().close(), lockPreviousFileEntry]);
4848
+ await Promise.all([fileWriter.writable.getWriter().close(), lockPreviousFileEntry]);
4806
4849
  await requestLockWriter();
4807
4850
  writingBufferedEntryData = true;
4808
4851
  fileEntry.diskNumberStart = writer.diskNumber;
@@ -4813,7 +4856,7 @@
4813
4856
  updateLocalHeader(fileEntry, localHeaderView, options);
4814
4857
  await skipDiskIfNeeded(writable);
4815
4858
  await writeData(writer, localHeaderArray);
4816
- await blob.stream().pipeTo(writable, { preventClose: true, preventAbort: true, signal });
4859
+ await fileWriter.readable.pipeTo(writable, { preventClose: true, preventAbort: true, signal });
4817
4860
  writer.size += fileWriter.size;
4818
4861
  writingBufferedEntryData = false;
4819
4862
  } else {
@@ -4828,7 +4871,7 @@
4828
4871
  zipWriter.offset += fileEntry.size;
4829
4872
  return fileEntry;
4830
4873
  } catch (error) {
4831
- if ((bufferedWrite && writingBufferedEntryData) || (!bufferedWrite && writingEntryData)) {
4874
+ if (writingBufferedEntryData || writingEntryData) {
4832
4875
  zipWriter.hasCorruptedEntries = true;
4833
4876
  if (error) {
4834
4877
  try {
@@ -1 +1 @@
1
- ((e,t)=>{"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).zip={})})(this,function(e){"use strict";const{Array:t,Object:r,String:s,Number:n,BigInt:a,Math:i,Date:o,Map:c,Set:l,Response:d,URL:u,Error:p,Uint8Array:f,Uint16Array:h,Uint32Array:w,DataView:m,Blob:g,Promise:y,TextEncoder:b,TextDecoder:z,document:S,crypto:x,btoa:F,TransformStream:k,ReadableStream:D,WritableStream:E,CompressionStream:v,DecompressionStream:A,navigator:U,Worker:R}="undefined"!=typeof globalThis?globalThis:this||self,T=4294967295,C=65535,M=255,W=67324752,_=134695760,B=_,N=33639248,I=101010256,O=101075792,L=117853008,H=22,Z=21589,P=2048,V=16384,q=2048,K=1024,j=512,X="/",G=30,Y=new o(2107,11,31),J=new o(1980,0,1),Q=void 0,$="undefined",ee="function";let te=2;try{typeof U!=$&&U.hardwareConcurrency&&(te=U.hardwareConcurrency)}catch{}const re={workerURI:"./core/web-worker-wasm.js",wasmURI:"./core/streams/zlib-wasm/zlib-streams.wasm",chunkSize:65536,maxWorkers:te,terminateWorkerTimeout:5e3,useWebWorkers:!0,useCompressionStream:!0,CompressionStream:typeof v!=$&&v,DecompressionStream:typeof A!=$&&A},se=r.assign({},re);function ne(){return se}function ae(e){return i.max(e.chunkSize,64)}const ie="HTTP error ",oe="HTTP Range not supported",ce="Range",le="GET",de="bytes",ue=65536,pe="writable";class fe{constructor(){this.size=0}init(){this.initialized=!0}}class he extends fe{get readable(){const e=this,{chunkSize:t=ue}=e,r=new D({start(){this.chunkOffset=0},async pull(s){const{offset:n=0,size:a,diskNumberStart:o}=r,{chunkOffset:c}=this,l=a===Q?t:i.min(t,a-c),d=await Pe(e,n+c,l,o);s.enqueue(d),c+t>a||a===Q&&!d.length&&l?s.close():this.chunkOffset+=t}});return r}}class we extends fe{constructor(){super();const e=this,t=new E({write(t){if(!e.initialized)throw new p("Writer not initialized");return e.writeUint8Array(t)}});r.defineProperty(e,pe,{get:()=>t})}writeUint8Array(){}}class me extends he{constructor(e){super();let t=e.length;for(;"="==e.charAt(t-1);)t--;const s=e.indexOf(",")+1;r.assign(this,{dataURI:e,dataStart:s,size:i.floor(.75*(t-s))})}readUint8Array(e,t){const{dataStart:r,dataURI:s}=this,n=new f(t),a=4*i.floor(e/3),o=atob(s.substring(a+r,4*i.ceil((e+t)/3)+r)),c=e-3*i.floor(a/4);let l=0;for(let e=c;c+t>e&&e<o.length;e++)n[e-c]=o.charCodeAt(e),l++;return l<n.length?n.subarray(0,l):n}}class ge extends we{constructor(e){super(),r.assign(this,{data:"data:"+(e||"")+";base64,",pending:[]})}writeUint8Array(e){const t=this;let r=0,n=t.pending;const a=t.pending.length;for(t.pending="",r=0;r<3*i.floor((a+e.length)/3)-a;r++)n+=s.fromCharCode(e[r]);for(;r<e.length;r++)t.pending+=s.fromCharCode(e[r]);n.length&&(n.length>2?t.data+=F(n):t.pending+=n)}getData(){return this.data+F(this.pending)}}class ye extends he{constructor(e){super(),r.assign(this,{blob:e,size:e.size})}async readUint8Array(e,t){const r=this,s=e+t,n=e||s<r.size?r.blob.slice(e,s):r.blob;let a=await n.arrayBuffer();return a.byteLength>t&&(a=a.slice(e,s)),new f(a)}}class be extends fe{constructor(e){super();const t=new k,s=[];e&&s.push(["Content-Type",e]),r.defineProperty(this,pe,{get:()=>t.writable}),this.blob=new d(t.readable,{headers:s}).blob()}getData(){return this.blob}}class ze extends ye{constructor(e){super(new g([e],{type:"text/plain"}))}}class Se extends be{constructor(e){super(e),r.assign(this,{encoding:e,utf8:!e||"utf-8"==e.toLowerCase()})}async getData(){const{encoding:e,utf8:t}=this,s=await super.getData();if(s.text&&t)return s.text();{const t=new FileReader;return new y((n,a)=>{r.assign(t,{onload:({target:e})=>n(e.result),onerror:()=>a(t.error)}),t.readAsText(s,e)})}}}class xe extends he{constructor(e,t){super(),ke(this,e,t)}async init(){await De(this,Me,Ue),super.init()}readUint8Array(e,t){return Ee(this,e,t,Me,Ue)}}class Fe extends he{constructor(e,t){super(),ke(this,e,t)}async init(){await De(this,We,Re),super.init()}readUint8Array(e,t){return Ee(this,e,t,We,Re)}}function ke(e,t,s){const{preventHeadRequest:n,useRangeHeader:a,forceRangeRequests:i,combineSizeEocd:o}=s;delete(s=r.assign({},s)).preventHeadRequest,delete s.useRangeHeader,delete s.forceRangeRequests,delete s.combineSizeEocd,delete s.useXHR,r.assign(e,{url:t,options:s,preventHeadRequest:n,useRangeHeader:a,forceRangeRequests:i,combineSizeEocd:o})}async function De(e,t,r){const{url:s,preventHeadRequest:a,useRangeHeader:i,forceRangeRequests:o,combineSizeEocd:c}=e;if((e=>{const{baseURI:t}=ne(),{protocol:r}=new u(e,t);return"http:"==r||"https:"==r})(s)&&(i||o)&&(void 0===a||a)){const s=await t(le,e,ve(e,c?-22:void 0)),a=s.headers.get("Accept-Ranges");if(!(o||a&&a.toLowerCase()==de))throw new p(oe);{let a;c&&(e.eocdCache=new f(await s.arrayBuffer()));const i=s.headers.get("Content-Range");if(i){const e=i.trim().split(/\s*\/\s*/);if(e.length){const t=e[1];t&&"*"!=t&&(a=n(t))}}a===Q?await Ce(e,t,r):e.size=a}}else await Ce(e,t,r)}async function Ee(e,t,r,s,n){const{useRangeHeader:a,forceRangeRequests:i,eocdCache:o,size:c,options:l}=e;if(a||i){if(o&&t==c-H&&r==H)return o;if(c>t){t+r>c&&(r=c-t);const n=await s(le,e,ve(e,t,r));if(206!=n.status)throw new p(oe);return new f(await n.arrayBuffer())}return new f}{const{data:s}=e;return s||await n(e,l),new f(e.data.subarray(t,t+r))}}function ve(e,t=0,s=1){return r.assign({},Ae(e),{[ce]:de+"="+(0>t?t:t+"-"+(t+s-1))})}function Ae({options:e}){const{headers:t}=e;if(t)return Symbol.iterator in t?r.fromEntries(t):t}async function Ue(e){await Te(e,Me)}async function Re(e){await Te(e,We)}async function Te(e,t){const r=await t(le,e,Ae(e));e.data=new f(await r.arrayBuffer()),e.size||(e.size=e.data.length)}async function Ce(e,t,r){if(e.preventHeadRequest)await r(e,e.options);else{const s=(await t("HEAD",e,Ae(e))).headers.get("Content-Length");s?e.size=n(s):await r(e,e.options)}}async function Me(e,{options:t,url:s},n){const a=await fetch(s,r.assign({},t,{method:e,headers:n}));if(400>a.status)return a;throw 416==a.status?new p(oe):new p(ie+(a.statusText||a.status))}function We(e,{url:t},s){return new y((n,a)=>{const i=new XMLHttpRequest;if(i.addEventListener("load",()=>{if(400>i.status){const e=[];i.getAllResponseHeaders().trim().split(/[\r\n]+/).forEach(t=>{const r=t.trim().split(/\s*:\s*/);r[0]=r[0].trim().replace(/^[a-z]|-[a-z]/g,e=>e.toUpperCase()),e.push(r)}),n({status:i.status,arrayBuffer:()=>i.response,headers:new c(e)})}else a(416==i.status?new p(oe):new p(ie+(i.statusText||i.status)))},!1),i.addEventListener("error",e=>a(e.detail?e.detail.error:new p("Network error")),!1),i.open(e,t),s)for(const e of r.entries(s))i.setRequestHeader(e[0],e[1]);i.responseType="arraybuffer",i.send()})}class _e extends he{constructor(e,t={}){super(),r.assign(this,{url:e,reader:t.useXHR?new Fe(e,t):new xe(e,t)})}set size(e){}get size(){return this.reader.size}async init(){await this.reader.init(),super.init()}readUint8Array(e,t){return this.reader.readUint8Array(e,t)}}class Be extends he{constructor(e){super(),e=new f(e.buffer,e.byteOffset,e.byteLength),r.assign(this,{array:e,size:e.length})}readUint8Array(e,t){return this.array.slice(e,e+t)}}class Ne extends we{constructor(e){super(),this.defaultBufferSize=e||262144}init(e=0){r.assign(this,{offset:0,array:new f(e>0?e:this.defaultBufferSize)}),super.init()}writeUint8Array(e){const t=this,r=t.offset+e.length;if(r>t.array.length){let e=t.array.length?2*t.array.length:t.defaultBufferSize;for(;r>e;)e*=2;const s=t.array;t.array=new f(e),t.array.set(s)}t.array.set(e,t.offset),t.offset+=e.length}getData(){return this.offset===this.array.length?this.array:this.array.slice(0,this.offset)}}class Ie extends he{constructor(e){super(),this.readers=e}async init(){const e=this,{readers:t}=e;e.lastDiskNumber=0,e.lastDiskOffset=0,await y.all(t.map(async(r,s)=>{await r.init(),s!=t.length-1&&(e.lastDiskOffset+=r.size),e.size+=r.size})),super.init()}async readUint8Array(e,t,r=0){const s=this,{readers:n}=this;let a,o=r;-1==o&&(o=n.length-1);let c=e;for(;n[o]&&c>=n[o].size;)c-=n[o].size,o++;const l=n[o];if(l){const n=l.size;if(c+t>n){const i=n-c;a=new f(t);const o=await Pe(l,c,i);a.set(o,0);const d=await s.readUint8Array(e+i,t-i,r);a.set(d,i),o.length+d.length<t&&(a=a.subarray(0,o.length+d.length))}else a=await Pe(l,c,t)}else a=new f;return s.lastDiskNumber=i.max(o,s.lastDiskNumber),a}}class Oe extends fe{constructor(e,t=4294967295){super();const s=this;let n,a,i;r.assign(s,{diskNumber:0,diskOffset:0,size:0,maxSize:t,availableSize:t});const o=new E({async write(t){const{availableSize:r}=s;if(i)t.length<r?await c(t):(await c(t.subarray(0,r)),await l(),s.diskOffset+=n.size,s.diskNumber++,i=null,await this.write(t.subarray(r)));else{const{value:r,done:o}=await e.next();if(o&&!r)throw new p("Writer iterator completed too soon");n=r,n.size=0,n.maxSize&&(s.maxSize=n.maxSize),s.availableSize=s.maxSize,await Ze(n),a=r.writable,i=a.getWriter(),await this.write(t)}},async close(){await i.ready,await l()}});async function c(e){const t=e.length;t&&(await i.ready,await i.write(e),n.size+=t,s.size+=t,s.availableSize-=t)}async function l(){await i.close()}r.defineProperty(s,pe,{get:()=>o})}}class Le{constructor(e){return t.isArray(e)&&(e=new Ie(e)),e instanceof D&&(e={readable:e}),e}}class He{constructor(e){return e.writable===Q&&typeof e.next==ee&&(e=new Oe(e)),e instanceof E&&(e={writable:e}),e.size===Q&&(e.size=0),e instanceof Oe||r.assign(e,{diskNumber:0,diskOffset:0,availableSize:1/0,maxSize:1/0}),e}}async function Ze(e,t){if(!e.init||e.initialized)return y.resolve();await e.init(t)}function Pe(e,t,r,s){return e.readUint8Array(t,r,s)}const Ve=[];for(let e=0;256>e;e++){let t=e;for(let e=0;8>e;e++)1&t?t=t>>>1^3988292384:t>>>=1;Ve[e]=t}class qe{constructor(e){this.crc=e||-1}append(e){let t=0|this.crc;for(let r=0,s=0|e.length;s>r;r++)t=t>>>8^Ve[255&(t^e[r])];this.crc=t}get(){return~this.crc}}class Ke extends k{constructor(){let e;const t=new qe;super({transform(e,r){t.append(e),r.enqueue(e)},flush(){const r=new f(4);new m(r.buffer).setUint32(0,t.get()),e.value=r}}),e=this}}function je(e){if(typeof b==$){const t=new f((e=unescape(encodeURIComponent(e))).length);for(let r=0;r<t.length;r++)t[r]=e.charCodeAt(r);return t}return(new b).encode(e)}const Xe={concat(e,t){if(0===e.length||0===t.length)return e.concat(t);const r=e[e.length-1],s=Xe.getPartial(r);return 32===s?e.concat(t):Xe._shiftRight(t,s,0|r,e.slice(0,e.length-1))},bitLength(e){const t=e.length;if(0===t)return 0;const r=e[t-1];return 32*(t-1)+Xe.getPartial(r)},clamp(e,t){if(32*e.length<t)return e;const r=(e=e.slice(0,i.ceil(t/32))).length;return t&=31,r>0&&t&&(e[r-1]=Xe.partial(t,e[r-1]&2147483648>>t-1,1)),e},partial:(e,t,r)=>32===e?t:(r?0|t:t<<32-e)+1099511627776*e,getPartial:e=>i.round(e/1099511627776)||32,_shiftRight(e,t,r,s){for(void 0===s&&(s=[]);t>=32;t-=32)s.push(r),r=0;if(0===t)return s.concat(e);for(let n=0;n<e.length;n++)s.push(r|e[n]>>>t),r=e[n]<<32-t;const n=e.length?e[e.length-1]:0,a=Xe.getPartial(n);return s.push(Xe.partial(t+a&31,t+a>32?r:s.pop(),1)),s}},Ge={bytes:{fromBits(e){const t=Xe.bitLength(e)/8,r=new f(t);let s;for(let n=0;t>n;n++)3&n||(s=e[n/4]),r[n]=s>>>24,s<<=8;return r},toBits(e){const t=[];let r,s=0;for(r=0;r<e.length;r++)s=s<<8|e[r],3&~r||(t.push(s),s=0);return 3&r&&t.push(Xe.partial(8*(3&r),s)),t}}},Ye=class{constructor(e){const t=this;t.blockSize=512,t._init=[1732584193,4023233417,2562383102,271733878,3285377520],t._key=[1518500249,1859775393,2400959708,3395469782],e?(t._h=e._h.slice(0),t._buffer=e._buffer.slice(0),t._length=e._length):t.reset()}reset(){const e=this;return e._h=e._init.slice(0),e._buffer=[],e._length=0,e}update(e){const t=this;"string"==typeof e&&(e=Ge.utf8String.toBits(e));const r=t._buffer=Xe.concat(t._buffer,e),s=t._length,n=t._length=s+Xe.bitLength(e);if(n>9007199254740991)throw new p("Cannot hash more than 2^53 - 1 bits");const a=new w(r);let i=0;for(let e=t.blockSize+s-(t.blockSize+s&t.blockSize-1);n>=e;e+=t.blockSize)t._block(a.subarray(16*i,16*(i+1))),i+=1;return r.splice(0,16*i),t}finalize(){const e=this;let t=e._buffer;const r=e._h;t=Xe.concat(t,[Xe.partial(1,1)]);for(let e=t.length+2;15&e;e++)t.push(0);for(t.push(i.floor(e._length/4294967296)),t.push(0|e._length);t.length;)e._block(t.splice(0,16));return e.reset(),r}_f(e,t,r,s){return e>19?e>39?e>59?e>79?void 0:t^r^s:t&r|t&s|r&s:t^r^s:t&r|~t&s}_S(e,t){return t<<e|t>>>32-e}_block(e){const r=this,s=r._h,n=t(80);for(let t=0;16>t;t++)n[t]=e[t];let a=s[0],o=s[1],c=s[2],l=s[3],d=s[4];for(let e=0;79>=e;e++){16>e||(n[e]=r._S(1,n[e-3]^n[e-8]^n[e-14]^n[e-16]));const t=r._S(5,a)+r._f(e,o,c,l)+d+n[e]+r._key[i.floor(e/20)]|0;d=l,l=c,c=r._S(30,o),o=a,a=t}s[0]=s[0]+a|0,s[1]=s[1]+o|0,s[2]=s[2]+c|0,s[3]=s[3]+l|0,s[4]=s[4]+d|0}},Je={getRandomValues(e){const t=new w(e.buffer),r=e=>{let t=987654321;const r=4294967295;return()=>(t=36969*(65535&t)+(t>>16)&r,(((t<<16)+(e=18e3*(65535&e)+(e>>16)&r)&r)/4294967296+.5)*(i.random()>.5?1:-1))};for(let s,n=0;n<e.length;n+=4){const e=r(4294967296*(s||i.random()));s=987654071*e(),t[n/4]=4294967296*e()|0}return e}},Qe={importKey:e=>new Qe.hmacSha1(Ge.bytes.toBits(e)),pbkdf2(e,t,r,s){if(r=r||1e4,0>s||0>r)throw new p("invalid params to pbkdf2");const n=1+(s>>5)<<2;let a,i,o,c,l;const d=new ArrayBuffer(n),u=new m(d);let f=0;const h=Xe;for(t=Ge.bytes.toBits(t),l=1;(n||1)>f;l++){for(a=i=e.encrypt(h.concat(t,[l])),o=1;r>o;o++)for(i=e.encrypt(i),c=0;c<i.length;c++)a[c]^=i[c];for(o=0;(n||1)>f&&o<a.length;o++)u.setInt32(f,a[o]),f+=4}return d.slice(0,s/8)},hmacSha1:class{constructor(e){const t=this,r=t._hash=Ye,s=[[],[]];t._baseHash=[new r,new r];const n=t._baseHash[0].blockSize/32;e.length>n&&(e=(new r).update(e).finalize());for(let t=0;n>t;t++)s[0][t]=909522486^e[t],s[1][t]=1549556828^e[t];t._baseHash[0].update(s[0]),t._baseHash[1].update(s[1]),t._resultHash=new r(t._baseHash[0])}reset(){const e=this;e._resultHash=new e._hash(e._baseHash[0]),e._updated=!1}update(e){this._updated=!0,this._resultHash.update(e)}digest(){const e=this,t=e._resultHash.finalize(),r=new e._hash(e._baseHash[1]).update(t).finalize();return e.reset(),r}encrypt(e){if(this._updated)throw new p("encrypt on already updated hmac called!");return this.update(e),this.digest(e)}}},$e=typeof x!=$&&typeof x.getRandomValues==ee,et="Invalid password",tt="Invalid signature",rt="zipjs-abort-check-password";function st(e){return $e?x.getRandomValues(e):Je.getRandomValues(e)}const nt=16,at={name:"PBKDF2"},it=r.assign({hash:{name:"HMAC"}},at),ot=r.assign({iterations:1e3,hash:{name:"SHA-1"}},at),ct=["deriveBits"],lt=[8,12,16],dt=[16,24,32],ut=10,pt=[0,0,0,0],ft=typeof x!=$,ht=ft&&x.subtle,wt=ft&&typeof ht!=$,mt=Ge.bytes,gt=class{constructor(e){const t=this;t._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],t._tables[0][0][0]||t._precompute();const r=t._tables[0][4],s=t._tables[1],n=e.length;let a,i,o,c=1;if(4!==n&&6!==n&&8!==n)throw new p("invalid aes key size");for(t._key=[i=e.slice(0),o=[]],a=n;4*n+28>a;a++){let e=i[a-1];(a%n===0||8===n&&a%n===4)&&(e=r[e>>>24]<<24^r[e>>16&255]<<16^r[e>>8&255]<<8^r[255&e],a%n===0&&(e=e<<8^e>>>24^c<<24,c=c<<1^283*(c>>7))),i[a]=i[a-n]^e}for(let e=0;a;e++,a--){const t=i[3&e?a:a-4];o[e]=4>=a||4>e?t:s[0][r[t>>>24]]^s[1][r[t>>16&255]]^s[2][r[t>>8&255]]^s[3][r[255&t]]}}encrypt(e){return this._crypt(e,0)}decrypt(e){return this._crypt(e,1)}_precompute(){const e=this._tables[0],t=this._tables[1],r=e[4],s=t[4],n=[],a=[];let i,o,c,l;for(let e=0;256>e;e++)a[(n[e]=e<<1^283*(e>>7))^e]=e;for(let d=i=0;!r[d];d^=o||1,i=a[i]||1){let a=i^i<<1^i<<2^i<<3^i<<4;a=a>>8^255&a^99,r[d]=a,s[a]=d,l=n[c=n[o=n[d]]];let u=16843009*l^65537*c^257*o^16843008*d,p=257*n[a]^16843008*a;for(let r=0;4>r;r++)e[r][d]=p=p<<24^p>>>8,t[r][a]=u=u<<24^u>>>8}for(let r=0;5>r;r++)e[r]=e[r].slice(0),t[r]=t[r].slice(0)}_crypt(e,t){if(4!==e.length)throw new p("invalid aes block size");const r=this._key[t],s=r.length/4-2,n=[0,0,0,0],a=this._tables[t],i=a[0],o=a[1],c=a[2],l=a[3],d=a[4];let u,f,h,w=e[0]^r[0],m=e[t?3:1]^r[1],g=e[2]^r[2],y=e[t?1:3]^r[3],b=4;for(let e=0;s>e;e++)u=i[w>>>24]^o[m>>16&255]^c[g>>8&255]^l[255&y]^r[b],f=i[m>>>24]^o[g>>16&255]^c[y>>8&255]^l[255&w]^r[b+1],h=i[g>>>24]^o[y>>16&255]^c[w>>8&255]^l[255&m]^r[b+2],y=i[y>>>24]^o[w>>16&255]^c[m>>8&255]^l[255&g]^r[b+3],b+=4,w=u,m=f,g=h;for(let e=0;4>e;e++)n[t?3&-e:e]=d[w>>>24]<<24^d[m>>16&255]<<16^d[g>>8&255]<<8^d[255&y]^r[b++],u=w,w=m,m=g,g=y,y=u;return n}},yt=class{constructor(e,t){this._prf=e,this._initIv=t,this._iv=t}reset(){this._iv=this._initIv}update(e){return this.calculate(this._prf,e,this._iv)}incWord(e){if(255&~(e>>24))e+=1<<24;else{let t=e>>16&255,r=e>>8&255,s=255&e;255===t?(t=0,255===r?(r=0,255===s?s=0:++s):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=s}return e}incCounter(e){0===(e[0]=this.incWord(e[0]))&&(e[1]=this.incWord(e[1]))}calculate(e,t,r){let s;if(!(s=t.length))return[];const n=Xe.bitLength(t);for(let n=0;s>n;n+=4){this.incCounter(r);const s=e.encrypt(r);t[n]^=s[0],t[n+1]^=s[1],t[n+2]^=s[2],t[n+3]^=s[3]}return Xe.clamp(t,n)}},bt=Qe.hmacSha1;let zt=ft&&wt&&typeof ht.importKey==ee,St=ft&&wt&&typeof ht.deriveBits==ee;class xt extends k{constructor({password:e,rawPassword:t,signed:s,encryptionStrength:n,checkPasswordOnly:a}){super({start(){r.assign(this,{ready:new y(e=>this.resolveReady=e),password:Et(e,t),signed:s,strength:n-1,pending:new f})},async transform(e,t){const r=this,{password:s,strength:n,resolveReady:i,ready:o}=r;s?(await(async(e,t,r,s)=>{const n=await Dt(e,t,r,At(s,0,lt[t])),a=At(s,lt[t]);if(n[0]!=a[0]||n[1]!=a[1])throw new p(et)})(r,n,s,At(e,0,lt[n]+2)),e=At(e,lt[n]+2),a?t.error(new p(rt)):i()):await o;const c=new f(e.length-ut-(e.length-ut)%nt);t.enqueue(kt(r,e,c,0,ut,!0))},async flush(e){const{signed:t,ctr:r,hmac:s,pending:n,ready:a}=this;if(s&&r){await a;const i=At(n,0,n.length-ut),o=At(n,n.length-ut);let c=new f;if(i.length){const e=Rt(mt,i);s.update(e);const t=r.update(e);c=Ut(mt,t)}if(t){const e=At(Ut(mt,s.digest()),0,ut);for(let t=0;ut>t;t++)if(e[t]!=o[t])throw new p(tt)}e.enqueue(c)}}})}}class Ft extends k{constructor({password:e,rawPassword:t,encryptionStrength:s}){let n;super({start(){r.assign(this,{ready:new y(e=>this.resolveReady=e),password:Et(e,t),strength:s-1,pending:new f})},async transform(e,t){const r=this,{password:s,strength:n,resolveReady:a,ready:i}=r;let o=new f;s?(o=await(async(e,t,r)=>{const s=st(new f(lt[t]));return vt(s,await Dt(e,t,r,s))})(r,n,s),a()):await i;const c=new f(o.length+e.length-e.length%nt);c.set(o,0),t.enqueue(kt(r,e,c,o.length,0))},async flush(e){const{ctr:t,hmac:r,pending:s,ready:a}=this;if(r&&t){await a;let i=new f;if(s.length){const e=t.update(Rt(mt,s));r.update(e),i=Ut(mt,e)}n.signature=Ut(mt,r.digest()).slice(0,ut),e.enqueue(vt(i,n.signature))}}}),n=this}}function kt(e,t,r,s,n,a){const{ctr:i,hmac:o,pending:c}=e,l=t.length-n;let d;for(c.length&&(t=vt(c,t),r=((e,t)=>{if(t&&t>e.length){const r=e;(e=new f(t)).set(r,0)}return e})(r,l-l%nt)),d=0;l-nt>=d;d+=nt){const e=Rt(mt,At(t,d,d+nt));a&&o.update(e);const n=i.update(e);a||o.update(n),r.set(Ut(mt,n),d+s)}return e.pending=At(t,d),r}async function Dt(e,s,n,a){e.password=null;const i=await(async(e,t,r,s,n)=>{if(!zt)return Qe.importKey(t);try{return await ht.importKey("raw",t,r,!1,n)}catch{return zt=!1,Qe.importKey(t)}})(0,n,it,0,ct),o=await(async(e,t,r)=>{if(!St)return Qe.pbkdf2(t,e.salt,ot.iterations,r);try{return await ht.deriveBits(e,t,r)}catch{return St=!1,Qe.pbkdf2(t,e.salt,ot.iterations,r)}})(r.assign({salt:a},ot),i,8*(2*dt[s]+2)),c=new f(o),l=Rt(mt,At(c,0,dt[s])),d=Rt(mt,At(c,dt[s],2*dt[s])),u=At(c,2*dt[s]);return r.assign(e,{keys:{key:l,authentication:d,passwordVerification:u},ctr:new yt(new gt(l),t.from(pt)),hmac:new bt(d)}),u}function Et(e,t){return t===Q?je(e):t}function vt(e,t){let r=e;return e.length+t.length&&(r=new f(e.length+t.length),r.set(e,0),r.set(t,e.length)),r}function At(e,t,r){return e.subarray(t,r)}function Ut(e,t){return e.fromBits(t)}function Rt(e,t){return e.toBits(t)}class Tt extends k{constructor({password:e,passwordVerification:t,checkPasswordOnly:s}){super({start(){r.assign(this,{password:e,passwordVerification:t}),_t(this,e)},transform(e,t){const r=this;if(r.password){const t=Mt(r,e.subarray(0,12));if(r.password=null,t.at(-1)!=r.passwordVerification)throw new p(et);e=e.subarray(12)}s?t.error(new p(rt)):t.enqueue(Mt(r,e))}})}}class Ct extends k{constructor({password:e,passwordVerification:t}){super({start(){r.assign(this,{password:e,passwordVerification:t}),_t(this,e)},transform(e,t){const r=this;let s,n;if(r.password){r.password=null;const t=st(new f(12));t[11]=r.passwordVerification,s=new f(e.length+t.length),s.set(Wt(r,t),0),n=12}else s=new f(e.length),n=0;s.set(Wt(r,e),n),t.enqueue(s)}})}}function Mt(e,t){const r=new f(t.length);for(let s=0;s<t.length;s++)r[s]=Nt(e)^t[s],Bt(e,r[s]);return r}function Wt(e,t){const r=new f(t.length);for(let s=0;s<t.length;s++)r[s]=Nt(e)^t[s],Bt(e,t[s]);return r}function _t(e,t){const s=[305419896,591751049,878082192];r.assign(e,{keys:s,crcKey0:new qe(s[0]),crcKey2:new qe(s[2])});for(let r=0;r<t.length;r++)Bt(e,t.charCodeAt(r))}function Bt(e,t){let[r,s,n]=e.keys;e.crcKey0.append([t]),r=~e.crcKey0.get(),s=Ot(i.imul(Ot(s+It(r)),134775813)+1),e.crcKey2.append([s>>>24]),n=~e.crcKey2.get(),e.keys=[r,s,n]}function Nt(e){const t=2|e.keys[2];return It(i.imul(t,1^t)>>>8)}function It(e){return 255&e}function Ot(e){return 4294967295&e}const Lt="Invalid uncompressed size";class Ht extends k{constructor(e,{chunkSize:t,CompressionStreamZlib:r,CompressionStream:s}){super({});const{compressed:n,encrypted:a,useCompressionStream:i,zipCrypto:o,signed:c,level:l}=e,d=this;let u,p,f=super.readable;a&&!o||!c||(u=new Ke,f=qt(f,u)),n&&(f=Vt(f,i,{level:l,chunkSize:t},s,r,s)),a&&(o?f=qt(f,new Ct(e)):(p=new Ft(e),f=qt(f,p))),Pt(d,f,()=>{let e;a&&!o&&(e=p.signature),a&&!o||!c||(e=new m(u.value.buffer).getUint32(0)),d.signature=e})}}class Zt extends k{constructor(e,{chunkSize:t,DecompressionStreamZlib:r,DecompressionStream:s}){super({});const{zipCrypto:n,encrypted:a,signed:i,signature:o,compressed:c,useCompressionStream:l,deflate64:d}=e;let u,f,h=super.readable;a&&(n?h=qt(h,new Tt(e)):(f=new xt(e),h=qt(h,f))),c&&(h=Vt(h,l,{chunkSize:t,deflate64:d},s,r,s)),a&&!n||!i||(u=new Ke,h=qt(h,u)),Pt(this,h,()=>{if((!a||n)&&i){const e=new m(u.value.buffer);if(o!=e.getUint32(0,!1))throw new p(tt)}})}}function Pt(e,t,s){t=qt(t,new k({flush:s})),r.defineProperty(e,"readable",{get:()=>t})}function Vt(e,t,r,s,n,a){const i=t&&s?s:n||a,o=r.deflate64?"deflate64-raw":"deflate-raw";try{e=qt(e,new i(o,r))}catch(s){if(!t)throw s;if(n)e=qt(e,new n(o,r));else{if(!a)throw s;e=qt(e,new a(o,r))}}return e}function qt(e,t){return e.pipeThrough(t)}const Kt="data",jt="close",Xt="deflate",Gt="inflate";class Yt extends k{constructor(e,t){super({});const s=this,{codecType:n}=e;let a;n.startsWith(Xt)?a=Ht:n.startsWith(Gt)&&(a=Zt),s.outputSize=0;let i=0;const o=new a(e,t),c=super.readable,l=new k({transform(e,t){e&&e.length&&(i+=e.length,t.enqueue(e))},flush(){r.assign(s,{inputSize:i})}}),d=new k({transform(t,r){if(t&&t.length&&(r.enqueue(t),s.outputSize+=t.length,e.outputSize!==Q&&s.outputSize>e.outputSize))throw new p(Lt)},flush(){const{signature:e}=o;r.assign(s,{signature:e,inputSize:i})}});r.defineProperty(s,"readable",{get:()=>c.pipeThrough(l).pipeThrough(o).pipeThrough(d)})}}class Jt extends k{constructor(e){let t;super({transform:function r(s,n){if(t){const e=new f(t.length+s.length);e.set(t),e.set(s,t.length),s=e,t=null}s.length>e?(n.enqueue(s.slice(0,e)),r(s.slice(e),n)):t=s},flush(e){t&&t.length&&e.enqueue(t)}})}}let Qt;class $t{constructor(e,{readable:t,writable:s},{options:n,config:a,streamOptions:i,useWebWorkers:o,transferStreams:c,workerURI:l},d){const{signal:u}=i;return r.assign(e,{busy:!0,readable:t.pipeThrough(new Jt(a.chunkSize)).pipeThrough(new er(i),{signal:u}),writable:s,options:r.assign({},n),workerURI:l,transferStreams:c,terminate:()=>new y(t=>{const{worker:r,busy:s}=e;r?(s?e.resolveTerminated=t:(r.terminate(),t()),e.interface=null):t()}),onTaskFinished(){const{resolveTerminated:t}=e;t&&(e.resolveTerminated=null,e.terminated=!0,e.worker.terminate(),t()),e.busy=!1,d(e)}}),Qt===Q&&(Qt=typeof R!=$),(o&&Qt?sr:rr)(e,a)}}class er extends k{constructor({onstart:e,onprogress:t,size:r,onend:s}){let n=0;super({async start(){e&&await tr(e,r)},async transform(e,s){n+=e.length,t&&await tr(t,n,r),s.enqueue(e)},async flush(){s&&await tr(s,n)}})}}async function tr(e,...t){try{await e(...t)}catch{}}function rr(e,t){return{run:()=>(async({options:e,readable:t,writable:r,onTaskFinished:s},n)=>{let a;try{if(!e.useCompressionStream)try{await void 0}catch{e.useCompressionStream=!0}a=new Yt(e,n),await t.pipeThrough(a).pipeTo(r,{preventClose:!0,preventAbort:!0});const{signature:s,inputSize:i,outputSize:o}=a;return{signature:s,inputSize:i,outputSize:o}}catch(e){throw a&&(e.outputSize=a.outputSize),e}finally{s()}})(e,t)}}function sr(e,t){const{baseURI:s,chunkSize:n}=t;let{wasmURI:a}=t;if(!e.interface){let i;typeof a==ee&&(a=a());try{i=((e,t,s)=>{const n={type:"module"};let a,i;if(typeof e==ee&&(e=e()),e.startsWith("data:")||e.startsWith("blob:"))try{i=new R(e)}catch{i=new R(e,n)}else{try{a=new u(e,t)}catch{a=e}i=new R(a,n)}return i.addEventListener("message",e=>(async({data:e},t)=>{const{type:s,value:n,messageId:a,result:i,error:o}=e,{reader:c,writer:l,resolveResult:d,rejectResult:u,onTaskFinished:h}=t;try{if(o){const{message:e,stack:t,code:s,name:n,outputSize:a}=o,i=new p(e);r.assign(i,{stack:t,code:s,name:n,outputSize:a}),w(i)}else{if("pull"==s){const{value:e,done:r}=await c.read();ar({type:Kt,value:e,done:r,messageId:a},t)}s==Kt&&(await l.ready,await l.write(new f(n)),ar({type:"ack",messageId:a},t)),s==jt&&w(null,i)}}catch(o){ar({type:jt,messageId:a},t),w(o)}function w(e,t){e?u(e):d(t),l&&l.releaseLock(),h()}})(e,s)),i})(e.workerURI,s,e)}catch{return Qt=!1,rr(e,t)}r.assign(e,{worker:i,interface:{run:()=>(async(e,t)=>{let s,n;const a=new y((e,t)=>{s=e,n=t});r.assign(e,{reader:null,writer:null,resolveResult:s,rejectResult:n,result:a});const{readable:i,options:o}=e,{writable:c,closed:l}=(e=>{let t;const r=new y(e=>t=e);return{writable:new E({async write(t){const r=e.getWriter();await r.ready,await r.write(t),r.releaseLock()},close(){t()},abort:t=>e.getWriter().abort(t)}),closed:r}})(e.writable),d=ar({type:"start",options:o,config:t,readable:i,writable:c},e);d||r.assign(e,{reader:i.getReader(),writer:c.getWriter()});const u=await a;return d||await c.getWriter().close(),await l,u})(e,{chunkSize:n,wasmURI:a,baseURI:s})}})}return e.interface}let nr=!0;function ar(e,{worker:t,writer:r,onTaskFinished:s,transferStreams:n}){try{const{value:r,readable:s,writable:a}=e,i=[];if(r&&(e.value=r,i.push(e.value.buffer)),n&&nr?(s&&i.push(s),a&&i.push(a)):e.readable=e.writable=null,i.length)try{return t.postMessage(e,i),!0}catch{nr=!1,e.readable=e.writable=null,t.postMessage(e)}else t.postMessage(e)}catch(e){throw r&&r.releaseLock(),s(),e}}let ir=[];const or=[];let cr=0;async function lr(e,t){const{options:r,config:s}=t,{transferStreams:a,useWebWorkers:i,useCompressionStream:o,compressed:c,signed:l,encrypted:d}=r,{workerURI:u,maxWorkers:p}=s;t.transferStreams=a||a===Q;const f=!(c||l||d||t.transferStreams);return t.useWebWorkers=!f&&(i||i===Q&&s.useWebWorkers),t.workerURI=t.useWebWorkers&&u?u:Q,r.useCompressionStream=o||o===Q&&s.useCompressionStream,(await(async()=>{const r=ir.find(e=>!e.busy);if(r)return dr(r),new $t(r,e,t,h);if(ir.length<p){const r={indexWorker:cr};return cr++,ir.push(r),new $t(r,e,t,h)}return new y(r=>or.push({resolve:r,stream:e,workerOptions:t}))})()).run();function h(e){if(or.length){const[{resolve:t,stream:r,workerOptions:s}]=or.splice(0,1);t(new $t(e,r,s,h))}else e.worker?(dr(e),((e,t)=>{const{config:r}=t,{terminateWorkerTimeout:s}=r;n.isFinite(s)&&s>=0&&(e.terminated?e.terminated=!1:e.terminateTimeout=setTimeout(async()=>{ir=ir.filter(t=>t!=e);try{await e.terminate()}catch{}},s))})(e,t)):ir=ir.filter(t=>t!=e)}}function dr(e){const{terminateTimeout:t}=e;t&&(clearTimeout(t),e.terminateTimeout=null)}const ur="\0☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ".split("");function pr(e,t){return t&&"cp437"==t.trim().toLowerCase()?(e=>{{let t="";for(let r=0;r<e.length;r++)t+=ur[e[r]];return t}})(e):new z(t).decode(e)}const fr="filename",hr="rawFilename",wr="comment",mr="rawComment",gr="uncompressedSize",yr="compressedSize",br="offset",zr="diskNumberStart",Sr="lastModDate",xr="rawLastModDate",Fr="lastAccessDate",kr="creationDate",Dr="rawCreationDate",Er="internalFileAttributes",vr="externalFileAttributes",Ar="msdosAttributesRaw",Ur="msdosAttributes",Rr="msDosCompatible",Tr="zip64",Cr="encrypted",Mr="version",Wr="versionMadeBy",_r="zipCrypto",Br="directory",Nr="executable",Ir="compressionMethod",Or="signature",Lr="extraField",Hr="unixMode",Zr="setuid",Pr="setgid",Vr="sticky",qr=[fr,hr,gr,yr,Sr,xr,wr,mr,Fr,kr,Dr,br,zr,Er,vr,Ar,Ur,Rr,Tr,Cr,Mr,Wr,_r,Br,Nr,Ir,Or,Lr,"extraFieldUnix","extraFieldInfoZip","uid","gid",Hr,Zr,Pr,Vr,"bitFlag","filenameUTF8","commentUTF8","rawExtraField","extraFieldZip64","extraFieldUnicodePath","extraFieldUnicodeComment","extraFieldAES","extraFieldNTFS","extraFieldExtendedTimestamp"];class Kr{constructor(e){qr.forEach(t=>this[t]=e[t])}}const jr="password",Xr="rawPassword",Gr="passThrough",Yr="signal",Jr="useWebWorkers",Qr="useCompressionStream",$r="preventClose",es="supportZip64SplitFile",ts="offset",rs="usdz",ss="File format is not recognized",ns="Compression method not supported",as="Split zip file",is="utf-8",os="cp437",cs=[[gr,T],[yr,T],[br,T],[zr,C]],ls={[C]:{getValue:xs,bytes:4},[T]:{getValue:Fs,bytes:8}};class ds{constructor(e,t={}){r.assign(this,{reader:new Le(e),options:t,config:ne(),readRanges:[]})}async*getEntriesGenerator(e={}){const t=this;let{reader:s}=t;const{config:n}=t;if(await Ze(s),s.size!==Q&&s.readUint8Array||(s=new ye(await new d(s.readable).blob()),await Ze(s)),s.size<H)throw new p(ss);s.chunkSize=ae(n);const a=await(async(e,t,r)=>{const s=new f(4);var n;return n=t,ks(s).setUint32(0,n,!0),await a(22)||await a(i.min(1048582,r));async function a(t){const n=r-t,a=await Pe(e,n,t);for(let e=a.length-22;e>=0;e--)if(a[e]==s[0]&&a[e+1]==s[1]&&a[e+2]==s[2]&&a[e+3]==s[3])return{offset:n+e,buffer:a.slice(e,e+22).buffer}}})(s,I,s.size);if(!a)throw xs(ks(await Pe(s,0,4)))==_?new p(as):new p("End of central directory not found");const o=ks(a);let c=xs(o,12),l=xs(o,16);const u=a.offset,h=Ss(o,20),w=u+H+h;let m=Ss(o,4);const g=s.lastDiskNumber||0;let b=Ss(o,6),z=Ss(o,8),S=0,x=0;if(l==T||c==T||z==C||b==C){const e=ks(await Pe(s,a.offset-20,20));if(xs(e,0)==L){l=Fs(e,8);let t=await Pe(s,l,56,-1),r=ks(t);const n=a.offset-20-56;if(xs(r,0)!=O&&l!=n){const e=l;l=n,l>e&&(S=l-e),t=await Pe(s,l,56,-1),r=ks(t)}if(xs(r,0)!=O)throw new p("End of Zip64 central directory locator not found");m==C&&(m=xs(r,16)),b==C&&(b=xs(r,20)),z==C&&(z=Fs(r,32)),c==T&&(c=Fs(r,40)),l-=c}}if(l<s.size||(S=s.size-l-c-H,l=s.size-c-H),g!=m)throw new p(as);if(0>l)throw new p(ss);let F=0,D=await Pe(s,l,c,b),E=ks(D);if(c){const e=a.offset-c;if(xs(E,F)!=N&&l!=e){const t=l;l=e,l>t&&(S+=l-t),D=await Pe(s,l,c,b),E=ks(D)}}const v=a.offset-l-(s.lastDiskOffset||0);if(c==v||0>v||(c=v,D=await Pe(s,l,c,b),E=ks(D)),0>l||l>=s.size)throw new p(ss);const A=gs(t,e,"filenameEncoding"),U=gs(t,e,"commentEncoding");for(let a=0;z>a;a++){const o=new us(s,n,t.options);if(xs(E,F)!=N)throw new p("Central directory header not found");ps(o,E,F+6);const c=!!o.bitFlag.languageEncodingFlag,l=F+46,u=l+o.filenameLength,f=u+o.extraFieldLength,h=Ss(E,F+4),w=!(h>>8),m=h>>8==3,g=D.subarray(l,u),b=Ss(E,F+32),v=f+b,R=D.subarray(f,v),T=c,W=c,_=xs(E,F+38),B=_&M,I={readOnly:!!(1&B),hidden:!!(2&B),system:!!(4&B),directory:!!(16&B),archive:!!(32&B)},O=xs(E,F+42)+S,L=gs(t,e,"decodeText")||pr,H=T?is:A||os,Z=W?is:U||os;let P=L(g,H);P===Q&&(P=pr(g,H));let G=L(R,Z);G===Q&&(G=pr(R,Z)),r.assign(o,{versionMadeBy:h,msDosCompatible:w,compressedSize:0,uncompressedSize:0,commentLength:b,offset:O,diskNumberStart:Ss(E,F+34),internalFileAttributes:Ss(E,F+36),externalFileAttributes:_,msdosAttributesRaw:B,msdosAttributes:I,rawFilename:g,filenameUTF8:T,commentUTF8:W,rawExtraField:D.subarray(u,f),rawComment:R,filename:P,comment:G}),x=i.max(O,x),fs(o,o,E,F+6);const Y=o.externalFileAttributes>>16&C;o.unixMode===Q&&16877&Y&&(o.unixMode=Y);const J=!!(o.unixMode&q),$=!!(o.unixMode&K),ee=!!(o.unixMode&j),te=o.unixMode!==Q?!!(73&o.unixMode):m&&!!(73&Y),re=o.unixMode!==Q&&(61440&o.unixMode)==V,se=(61440&Y)==V;r.assign(o,{setuid:J,setgid:$,sticky:ee,unixExternalUpper:Y,internalFileAttribute:o.internalFileAttributes,externalFileAttribute:o.externalFileAttributes,executable:te,directory:re||se||w&&I.directory||P.endsWith(X)&&!o.uncompressedSize,zipCrypto:o.encrypted&&!o.extraFieldAES});const ne=new Kr(o);ne.getData=(e,r)=>o.getData(e,ne,t.readRanges,r),ne.arrayBuffer=async e=>{const r=new k,[s]=await y.all([new d(r.readable).arrayBuffer(),o.getData(r,ne,t.readRanges,e)]);return s},F=v;const{onprogress:ae}=e;if(ae)try{await ae(a+1,z,new Kr(o))}catch{}yield ne}const R=gs(t,e,"extractPrependedData"),W=gs(t,e,"extractAppendedData");return R&&(t.prependedData=x>0?await Pe(s,0,x):new f),t.comment=h?await Pe(s,u+H,h):new f,W&&(t.appendedData=w<s.size?await Pe(s,w,s.size-w):new f),!0}async getEntries(e={}){const t=[];for await(const r of this.getEntriesGenerator(e))t.push(r);return t}async close(){}}let us=class{constructor(e,t,s){r.assign(this,{reader:e,config:t,options:s})}async getData(e,t,s,n={}){const a=this,{reader:i,offset:o,diskNumberStart:c,extraFieldAES:l,extraFieldZip64:d,compressionMethod:u,config:h,bitFlag:w,signature:m,rawLastModDate:g,uncompressedSize:y,compressedSize:b}=a,{dataDescriptor:z}=w,S=t.localDirectory={},x=ks(await Pe(i,o,G,c));let F=gs(a,n,jr),k=gs(a,n,Xr);const D=gs(a,n,Gr);if(F=F&&F.length&&F,k=k&&k.length&&k,l&&99!=l.originalCompressionMethod)throw new p(ns);if(0!=u&&8!=u&&9!=u&&!D)throw new p(ns);if(xs(x,0)!=W)throw new p("Local file header not found");ps(S,x,4);const{extraFieldLength:v,filenameLength:A,lastAccessDate:U,creationDate:R}=S;S.rawExtraField=v?await Pe(i,o+G+A,v,c):new f,fs(a,S,x,4,!0),r.assign(t,{lastAccessDate:U,creationDate:R});const T=a.encrypted&&S.encrypted&&!D,C=T&&!l;if(D||(t.zipCrypto=C),T){if(!C&&l.strength===Q)throw new p("Encryption method not supported");if(!F&&!k)throw new p("File contains encrypted entry")}const _=o+G+A+v,N=b,I=i.readable;r.assign(I,{diskNumberStart:c,offset:_,size:N});const O=gs(a,n,Yr),L=gs(a,n,"checkPasswordOnly");let H=gs(a,n,"checkOverlappingEntry");const Z=gs(a,n,"checkOverlappingEntryOnly");Z&&(H=!0);const{onstart:P,onprogress:V,onend:q}=n,K=9==u;let j=gs(a,n,Qr);K&&(j=!1);const X={options:{codecType:Gt,password:F,rawPassword:k,zipCrypto:C,encryptionStrength:l&&l.strength,signed:gs(a,n,"checkSignature")&&!D,passwordVerification:C&&(z?g>>>8&M:m>>>24&M),outputSize:D?b:y,signature:m,compressed:0!=u&&!D,encrypted:a.encrypted&&!D,useWebWorkers:gs(a,n,Jr),useCompressionStream:j,transferStreams:gs(a,n,"transferStreams"),deflate64:K,checkPasswordOnly:L},config:h,streamOptions:{signal:O,size:N,onstart:P,onprogress:V,onend:q}};let Y;H&&await(async({reader:e,fileEntry:t,offset:r,diskNumberStart:s,signature:n,compressedSize:a,uncompressedSize:i,dataOffset:o,dataDescriptor:c,extraFieldZip64:l,readRanges:d})=>{let u=0;if(s)for(let t=0;s>t;t++)u+=e.readers[t].size;let f=0;if(c&&(f=l?20:12),f){const r=await Pe(e,o+a,f+4,s);if(xs(ks(r),0)==B){const e=xs(ks(r),4);let s,o;l?(s=Fs(ks(r),8),o=Fs(ks(r),16)):(s=xs(ks(r),8),o=xs(ks(r),12)),(t.encrypted&&!t.zipCrypto||e==n)&&s==a&&o==i&&(f+=4)}}const h={start:u+r,end:u+o+a+f,fileEntry:t};for(const e of d)if(e.fileEntry!=t&&h.start>=e.start&&h.start<e.end){const t=new p("Overlapping entry found");throw t.overlappingEntry=e.fileEntry,t}d.push(h)})({reader:i,fileEntry:t,offset:o,diskNumberStart:c,signature:m,compressedSize:b,uncompressedSize:y,dataOffset:_,dataDescriptor:z||S.bitFlag.dataDescriptor,extraFieldZip64:d||S.extraFieldZip64,readRanges:s});try{if(!Z){L&&(e=new E),e=new He(e),await Ze(e,D?b:y),({writable:Y}=e);const{outputSize:t}=await lr({readable:I,writable:Y},X);if(e.size+=t,t!=(D?b:y))throw new p(Lt)}}catch(t){if(t.outputSize!==Q&&(e.size+=t.outputSize),!L||t.message!=rt)throw t}finally{gs(a,n,$r)||!Y||Y.locked||await Y.getWriter().close()}return L||Z?Q:e.getData?e.getData():Y}};function ps(e,t,s){const n=e.rawBitFlag=Ss(t,s+2),a=!(1&~n),i=xs(t,s+6);r.assign(e,{encrypted:a,version:Ss(t,s),bitFlag:{level:(6&n)>>1,dataDescriptor:!(8&~n),languageEncodingFlag:(n&P)==P},rawLastModDate:i,lastModDate:ys(i),filenameLength:Ss(t,s+22),extraFieldLength:Ss(t,s+24)})}function fs(e,t,s,n,a){const{rawExtraField:i}=t,l=t.extraField=new c,d=ks(new f(i));let u=0;try{for(;u<i.length;){const e=Ss(d,u),t=Ss(d,u+2);l.set(e,{type:e,data:i.slice(u+4,u+4+t)}),u+=4+t}}catch{}const h=Ss(s,n+4);r.assign(t,{signature:xs(s,n+10),compressedSize:xs(s,n+14),uncompressedSize:xs(s,n+18)});const w=l.get(1);w&&(((e,t)=>{t.zip64=!0;const r=ks(e.data),s=cs.filter(([e,r])=>t[e]==r);for(let n=0,a=0;n<s.length;n++){const[i,o]=s[n];if(t[i]==o){const s=ls[o];t[i]=e[i]=s.getValue(r,a),a+=s.bytes}else if(e[i])throw new p("Zip64 extra field not found")}})(w,t),t.extraFieldZip64=w);const m=l.get(28789);m&&(hs(m,fr,hr,t,e),t.extraFieldUnicodePath=m);const g=l.get(25461);g&&(hs(g,wr,mr,t,e),t.extraFieldUnicodeComment=g);const y=l.get(39169);y?(((e,t,s)=>{const n=ks(e.data),a=zs(n,4);r.assign(e,{vendorVersion:zs(n,0),vendorId:zs(n,2),strength:a,originalCompressionMethod:s,compressionMethod:Ss(n,5)}),t.compressionMethod=e.compressionMethod})(y,t,h),t.extraFieldAES=y):t.compressionMethod=h;const b=l.get(10);b&&(((e,t)=>{const s=ks(e.data);let n,a=4;try{for(;a<e.data.length&&!n;){const t=Ss(s,a),r=Ss(s,a+2);1==t&&(n=e.data.slice(a+4,a+4+r)),a+=4+r}}catch{}try{if(n&&24==n.length){const s=ks(n),a=s.getBigUint64(0,!0),i=s.getBigUint64(8,!0),o=s.getBigUint64(16,!0);r.assign(e,{rawLastModDate:a,rawLastAccessDate:i,rawCreationDate:o});const c={lastModDate:bs(a),lastAccessDate:bs(i),creationDate:bs(o)};r.assign(e,c),r.assign(t,c)}}catch{}})(b,t),t.extraFieldNTFS=b);const z=l.get(30805);if(z)ws(z,t,!1),t.extraFieldUnix=z;else{const e=l.get(30837);e&&(ws(e,t,!0),t.extraFieldInfoZip=e)}const S=l.get(Z);S&&(((e,t,r)=>{const s=ks(e.data),n=zs(s,0),a=[],i=[];r?(1&~n||(a.push(Sr),i.push(xr)),2&~n||(a.push(Fr),i.push("rawLastAccessDate")),4&~n||(a.push(kr),i.push(Dr))):5>e.data.length||(a.push(Sr),i.push(xr));let c=1;a.forEach((r,n)=>{if(e.data.length>=c+4){const a=xs(s,c);t[r]=e[r]=new o(1e3*a);const l=i[n];e[l]=a}c+=4})})(S,t,a),t.extraFieldExtendedTimestamp=S);const x=l.get(6534);x&&(t.extraFieldUSDZ=x)}function hs(e,t,s,n,a){const i=ks(e.data),o=new qe;o.append(a[s]);const c=ks(new f(4));c.setUint32(0,o.get(),!0);const l=xs(i,1);r.assign(e,{version:zs(i,0),[t]:pr(e.data.subarray(5)),valid:!a.bitFlag.languageEncodingFlag&&l==xs(c,0)}),e.valid&&(n[t]=e[t],n[t+"UTF8"]=!0)}function ws(e,t,s){try{const n=ks(new f(e.data));let a=0;const i=zs(n,a++),o=zs(n,a++),c=e.data.subarray(a,a+o);a+=o;const l=ms(c),d=zs(n,a++),u=e.data.subarray(a,a+d);a+=d;const p=ms(u);let h=Q;if(!s&&a+2<=e.data.length){const t=e.data;h=new m(t.buffer,t.byteOffset+a,2).getUint16(0,!0)}r.assign(e,{version:i,uid:l,gid:p,unixMode:h}),l!==Q&&(t.uid=l),p!==Q&&(t.gid=p),h!==Q&&(t.unixMode=h)}catch{}}function ms(e){const t=new f(4);return t.set(e,0),new m(t.buffer,t.byteOffset,4).getUint32(0,!0)}function gs(e,t,r){return t[r]===Q?e.options[r]:t[r]}function ys(e){const t=(4294901760&e)>>16,r=e&C;try{return new o(1980+((65024&t)>>9),((480&t)>>5)-1,31&t,(63488&r)>>11,(2016&r)>>5,2*(31&r),0)}catch{}}function bs(e){return new o(n(e/a(1e4)-a(116444736e5)))}function zs(e,t){return e.getUint8(t)}function Ss(e,t){return e.getUint16(t,!0)}function xs(e,t){return e.getUint32(t,!0)}function Fs(e,t){return n(e.getBigUint64(t,!0))}function ks(e){return new m(e.buffer)}const Ds="Version exceeds 65535",Es="Zip64 is not supported (make sure 'keepOrder' is set to 'true')",vs=new f([7,0,2,0,65,69,3,0,0]),As="infozip",Us="unix";let Rs=0;const Ts=[];class Cs{constructor(e,t={}){const s=(e=new He(e)).availableSize!==Q&&e.availableSize>0&&e.availableSize!==1/0&&e.maxSize!==Q&&e.maxSize>0&&e.maxSize!==1/0;r.assign(this,{writer:e,addSplitZipSignature:s,options:t,config:ne(),files:new c,filenames:new l,offset:t[ts]===Q?e.size||e.writable.size||0:t[ts],pendingEntriesSize:0,pendingAddFileCalls:new l,bufferedWrites:0})}async prependZip(e){if(this.filenames.size)throw new p("Zip file not empty");e=new Le(e);const t=new ds(e.readable),s=await t.getEntries();await t.close(),await e.readable.pipeTo(this.writer.writable,{preventClose:!0,preventAbort:!0}),this.writer.size=this.offset=e.size,this.filenames=new l(s.map(e=>e.filename)),this.files=new c(s.map(e=>{const{version:t,compressionMethod:s,lastModDate:n,lastAccessDate:a,creationDate:i,rawFilename:o,bitFlag:c,encrypted:l,uncompressedSize:d,compressedSize:u,diskOffset:p,diskNumber:h,zip64:w}=e;let{rawExtraFieldZip64:m,rawExtraFieldAES:g,rawExtraFieldExtendedTimestamp:y,rawExtraFieldNTFS:b,rawExtraFieldUnix:z,rawExtraField:S}=e;const{level:x,languageEncodingFlag:F,dataDescriptor:k}=c;m=m||new f,g=g||new f,y=y||new f,b=b||new f,z=e.rawExtraFieldUnix||new f,S=S||new f;const D=qs(m,g,y,b,z,S),E=w&&d>T,v=w&&u>T,{headerArray:A,headerView:U}=Ks({version:t,bitFlag:js(x,F,k,l,s),compressionMethod:s,uncompressedSize:d,compressedSize:u,lastModDate:n,rawFilename:o,zip64CompressedSize:v,zip64UncompressedSize:E,extraFieldLength:D});return r.assign(e,{zip64UncompressedSize:E,zip64CompressedSize:v,zip64Offset:w&&this.offset-p>T,zip64DiskNumberStart:w&&h>C,rawExtraFieldZip64:m,rawExtraFieldAES:g,rawExtraFieldExtendedTimestamp:y,rawExtraFieldNTFS:b,rawExtraFieldUnix:z,rawExtraField:S,extendedTimestamp:y.length>0||b.length>0,extraFieldExtendedTimestampFlag:1+(a?2:0)+(i?4:0),headerArray:A,headerView:U}),[e.filename,e]}))}async add(e="",s,n={}){const c=this,{pendingAddFileCalls:l,config:u}=c;let w;Rs<u.maxWorkers?Rs++:await new y(e=>Ts.push(e));try{if(e=e.trim(),c.filenames.has(e))throw new p("File already exists");return c.filenames.add(e),w=(async(e,s,n,c)=>{s=s.trim();let l=Ns(e,c,Rr),u=Ns(e,c,Wr,l?20:768);const w=Ns(e,c,Nr),g=Ns(e,c,"uid"),b=Ns(e,c,"gid");let z=Ns(e,c,Hr);const S=Ns(e,c,"unixExtraFieldType");let x=Ns(e,c,Zr),F=Ns(e,c,Pr),D=Ns(e,c,Vr);if(g!==Q&&(0>g||g>T))throw new p("Invalid uid (must be integer 0..2^32-1)");if(b!==Q&&(0>b||b>T))throw new p("Invalid gid (must be integer 0..2^32-1)");if(z!==Q&&(0>z||z>C))throw new p("Invalid UNIX mode (must be integer 0..65535)");if(S!==Q&&S!==As&&S!==Us)throw new p("Invalid unixExtraFieldType (must be 'infozip' or 'unix')");let E=Ns(e,c,Ar),v=Ns(e,c,Ur);const A=E!==Q||v!==Q;if(g!==Q||b!==Q||z!==Q||S?(l=!1,u=u&C|768):A&&(l=!0,u&=M),E!==Q&&(0>E||E>M))throw new p("Invalid msdosAttributesRaw (must be integer 0..255)");if(v&&"object"!=typeof v)throw new p("Invalid msdosAttributes (must be an object with boolean flags)");if(u>C)throw new p(Ds);let U=Ns(e,c,vr,0);!c[Br]&&s.endsWith(X)&&(c[Br]=!0);const R=Ns(e,c,Br);let N;R?(s.endsWith(X)||(s+=X),0===U&&(U=16,l||(U|=16877<<16))):l||0!==U||(U=w?493<<16:27525120),l||(N=U>>16&C,z=z===Q?N:z&C,x?z|=q:x=!!(z&q),F?z|=K:F=!!(z&K),D?z|=j:D=!!(z&j),R&&(z|=V),U=(z&C)<<16|U&M),({msdosAttributesRaw:E,msdosAttributes:v}=((e,t)=>{if(e!==Q)e&=M;else if(t!==Q){const{readOnly:r,hidden:s,system:n,directory:a,archive:i}=t;let o=0;r&&(o|=1),s&&(o|=2),n&&(o|=4),a&&(o|=16),i&&(o|=32),e=o&M}return t===Q&&(t={readOnly:!!(1&e),hidden:!!(2&e),system:!!(4&e),directory:!!(16&e),archive:!!(32&e)}),{msdosAttributesRaw:e,msdosAttributes:t}})(E,v)),A&&(U=U&T|E&M);const I=Ns(e,c,"encodeText",je);let O=I(s);if(O===Q&&(O=je(s)),qs(O)>C)throw new p("File entry name exceeds 64KB");const L=c[wr]||"";let H=I(L);if(H===Q&&(H=je(L)),qs(H)>C)throw new p("File entry comment exceeds 64KB");const P=Ns(e,c,Mr,20);if(P>C)throw new p(Ds);const $=Ns(e,c,Sr,new o),ee=Ns(e,c,Fr),te=Ns(e,c,kr),re=Ns(e,c,Er,0),se=Ns(e,c,Gr);let ne,ie;se||(ne=Ns(e,c,jr),ie=Ns(e,c,Xr));const oe=Ns(e,c,"encryptionStrength",3),ce=Ns(e,c,_r),le=Ns(e,c,"extendedTimestamp",!0),de=Ns(e,c,"keepOrder",!0),ue=Ns(e,c,Jr),pe=Ns(e,c,"bufferedWrite"),fe=Ns(e,c,"dataDescriptorSignature",!1),he=Ns(e,c,Yr),we=Ns(e,c,"useUnicodeFileNames",!0),me=Ns(e,c,Ir);let ge=Ns(e,c,"level"),ye=Ns(e,c,Qr),be=Ns(e,c,"dataDescriptor");pe&&be===Q&&(be=!1),(be===Q||ce)&&(be=!0),ge!==Q&&6!=ge&&(ye=!1),ye||e.config.CompressionStream!==Q||e.config.CompressionStreamZlib!==Q||(ge=0);let ze=Ns(e,c,Tr);if(!ce&&(ne!==Q||ie!==Q)&&(1>oe||oe>3))throw new p("The strength must equal 1, 2, or 3");let Se=new f;const xe=c[Lr];if(xe){let e=0,t=0;xe.forEach(t=>e+=4+qs(t)),Se=new f(e),xe.forEach((e,r)=>{if(r>C)throw new p("Extra field type exceeds 65535");if(qs(e)>C)throw new p("Extra field data exceeds 64KB");Ps(Se,new h([r]),t),Ps(Se,new h([qs(e)]),t+2),Ps(Se,e,t+4),t+=4+qs(e)})}let Fe=0,ke=0,De=0;if(se&&(De=c[gr],De===Q))throw new p("Undefined uncompressed size");const Ee=!0===ze;n&&(n=new Le(n),await Ze(n),se?(c.uncompressedSize=De,Fe=Is(De)):n.size===Q?(be=!0,(ze||ze===Q)&&(ze=!0,De=Fe=4294967296)):(c.uncompressedSize=De=n.size,Fe=Is(De)));const{diskOffset:ve,diskNumber:Ae,maxSize:Ue}=e.writer,Re=Ee||De>T,Te=Ee||Fe>T,Ce=Ee||e.offset+e.pendingEntriesSize-ve>T,Me=Ns(e,c,es,!0)&&Ee||Ae+i.ceil(e.pendingEntriesSize/Ue)>C;if(Ce||Re||Te||Me){if(!1===ze||!de)throw new p(Es);ze=!0}ze=ze||!1;const We=Ns(e,c,Cr),_e=(e=>{const{rawFilename:t,lastModDate:r,lastAccessDate:s,creationDate:n,level:o,zip64:c,zipCrypto:l,useUnicodeFileNames:d,dataDescriptor:u,directory:p,rawExtraField:h,encryptionStrength:w,extendedTimestamp:g,passThrough:y,encrypted:b,zip64UncompressedSize:z,zip64CompressedSize:S,zip64Offset:x,zip64DiskNumberStart:F,uncompressedSize:k,offset:D,diskNumberStart:E}=e;let{version:v,compressionMethod:A}=e;const U=!p&&(o>0||o===Q&&0!==A);let R,T;const M=y||!U,_=c&&(e.bufferedWrite||!z&&!S||M);if(c){let e=4,t=4;z&&(e+=8,t+=8),S&&(e+=8,t+=8),x&&(e+=8),F&&(e+=4),R=new f(e);const r=Vs(R);T=new f(t);const s=Vs(T);if(Ls(r,0,1),Ls(r,2,qs(R)-4),Ls(s,0,1),Ls(s,2,qs(T)-4),_){const e=Vs(R),t=Vs(T);let r=4,s=4;z&&(Zs(e,r,a(k)),r+=8,Zs(t,s,a(k)),s+=8),S&&M&&(Zs(e,r,a(k)),r+=8,Zs(t,s,a(k)),s+=8),x&&(Zs(e,r,a(D)),r+=8),F&&(Hs(e,r,E),r+=4),4==s&&(T=new f)}}else R=new f,T=new f;let B,N,I,O,L;if(b&&!l){B=new f(qs(vs)+2);const e=Vs(B);Ls(e,0,39169),Ps(B,vs,2),Os(e,8,w)}else B=new f;if(g){I=new f(9+(s?4:0)+(n?4:0));const e=Vs(I);Ls(e,0,Z),Ls(e,2,qs(I)-4),O=1+(s?2:0)+(n?4:0),Os(e,4,O);let t=5;Hs(e,t,i.floor(r.getTime()/1e3)),t+=4,s&&(Hs(e,t,i.floor(s.getTime()/1e3)),t+=4),n&&Hs(e,t,i.floor(n.getTime()/1e3));try{N=new f(36);const e=Vs(N),t=Bs(r);Ls(e,0,10),Ls(e,2,32),Ls(e,8,1),Ls(e,10,24),Zs(e,12,t),Zs(e,20,Bs(s)||t),Zs(e,28,Bs(n)||t)}catch{N=new f}}else N=I=new f;try{const{uid:t,gid:r,unixMode:s,setuid:n,setgid:a,sticky:i,unixExtraFieldType:o}=e;if(!o||t===Q&&r===Q&&s===Q)L=new f;else{const e=Ms(t),c=Ms(r);let l=new f;if(o==Us&&s!==Q){let e=s&C;n&&(e|=q),a&&(e|=K),i&&(e|=j),l=new f(2),new m(l.buffer).setUint16(0,e,!0)}const d=3+e.length+c.length+l.length;L=new f(4+d);const u=Vs(L);Ls(u,0,o==As?30837:30805),Ls(u,2,d),Os(u,4,1),Os(u,5,e.length);let p=6;Ps(L,e,p),p+=e.length,Os(u,p,c.length),p++,Ps(L,c,p),p+=c.length,Ps(L,l,p)}}catch{L=new f}A===Q&&(A=U?8:0),c&&(v=v>45?v:45),b&&!l&&(v=v>51?v:51,B[9]=A,A=99);const H=_?qs(T):0,P=H+qs(B,I,N,L,h),{headerArray:V,headerView:X,rawLastModDate:$}=Ks({version:v,bitFlag:js(o,d,u,b,A),compressionMethod:A,uncompressedSize:k,lastModDate:J>r?J:r>Y?Y:r,rawFilename:t,zip64CompressedSize:S,zip64UncompressedSize:z,extraFieldLength:P});let ee=G;const te=new f(ee+qs(t)+P),re=Vs(te);return Hs(re,0,W),Ps(te,V,4),Ps(te,t,ee),ee+=qs(t),_&&Ps(te,T,ee),ee+=H,Ps(te,B,ee),ee+=qs(B),Ps(te,I,ee),ee+=qs(I),Ps(te,N,ee),ee+=qs(N),Ps(te,L,ee),ee+=qs(L),Ps(te,h,ee),u&&(Hs(re,18,0),Hs(re,22,0)),{localHeaderArray:te,localHeaderView:re,headerArray:V,headerView:X,lastModDate:r,rawLastModDate:$,encrypted:b,compressed:U,version:v,compressionMethod:A,extraFieldExtendedTimestampFlag:O,rawExtraFieldZip64:R,localExtraFieldZip64Length:H,rawExtraFieldExtendedTimestamp:I,rawExtraFieldNTFS:N,rawExtraFieldUnix:L,rawExtraFieldAES:B,extraFieldLength:P}})(c=r.assign({},c,{rawFilename:O,rawComment:H,version:P,versionMadeBy:u,lastModDate:$,lastAccessDate:ee,creationDate:te,rawExtraField:Se,zip64:ze,zip64UncompressedSize:Re,zip64CompressedSize:Te,zip64Offset:Ce,zip64DiskNumberStart:Me,password:ne,rawPassword:ie,level:ge,useWebWorkers:ue,encryptionStrength:oe,extendedTimestamp:le,zipCrypto:ce,bufferedWrite:pe,keepOrder:de,useUnicodeFileNames:we,dataDescriptor:be,dataDescriptorSignature:fe,signal:he,msDosCompatible:l,internalFileAttribute:re,internalFileAttributes:re,externalFileAttribute:U,externalFileAttributes:U,useCompressionStream:ye,passThrough:se,encrypted:!!(ne&&qs(ne)||ie&&qs(ie))||se&&We,signature:c[Or],compressionMethod:me,uncompressedSize:De,offset:e.offset-ve,diskNumberStart:Ae,uid:g,gid:b,setuid:x,setgid:F,sticky:D,unixMode:z,msdosAttributesRaw:E,msdosAttributes:v,unixExternalUpper:N})),Be=(({zip64:e,dataDescriptor:t,dataDescriptorSignature:r})=>{let s,n=new f,a=0,i=e?20:12;return r&&(i+=4),t&&(n=new f(i),s=Vs(n),r&&(a=4,Hs(s,0,B))),{dataDescriptorArray:n,dataDescriptorView:s,dataDescriptorOffset:a}})(c),Ne=qs(_e.localHeaderArray,Be.dataDescriptorArray);let Ie;ke=Ne+Fe,e.options[rs]&&(ke+=ke+64),e.pendingEntriesSize+=ke;try{Ie=await(async(e,s,n,i,o)=>{const{files:c,writer:l}=e,{keepOrder:u,dataDescriptor:h,signal:w}=o,{headerInfo:m}=i,g=e.options[rs],b=t.from(c.values()).pop();let z,S,x,F,D,E,v,A={};c.set(s,A);try{let t;u&&(t=b&&b.lock,A.lock=new y(e=>x=e)),!(o.bufferedWrite||e.writerLocked||e.bufferedWrites&&u)&&h||g?(E=l,await U()):(E=new k,E.size=0,z=!0,e.bufferedWrites++,await Ze(l)),await Ze(E);const{writable:S,diskOffset:C}=l;if(e.addSplitZipSignature){delete e.addSplitZipSignature;const t=new f(4);Hs(Vs(t),0,_),await _s(l,t),e.offset+=4}g&&((e,t)=>{const{headerInfo:r}=e;let{localHeaderArray:s,extraFieldLength:n}=r,a=Vs(s),i=64-(t+qs(s))%64;4>i&&(i+=64);const o=new f(i),c=Vs(o);Ls(c,0,6534),Ls(c,2,i-2);const l=s;r.localHeaderArray=s=new f(qs(l)+i),Ps(s,l),Ps(s,o,qs(l)),a=Vs(s),Ls(a,28,n+i),e.metadataSize+=i})(i,e.offset-C);const{localHeaderView:W,localHeaderArray:B}=m;z||(await t,await R(S));const{diskNumber:N}=l;D=!0,A.diskNumberStart=N,z?v=new d(E.readable).blob():await _s(E,B),A=await(async(e,t,{diskNumberStart:s,lock:n},i,o,c)=>{const{headerInfo:l,dataDescriptorInfo:d,metadataSize:u}=i,{headerArray:p,headerView:f,lastModDate:h,rawLastModDate:w,encrypted:m,compressed:g,version:y,compressionMethod:b,rawExtraFieldZip64:z,localExtraFieldZip64Length:S,rawExtraFieldExtendedTimestamp:x,extraFieldExtendedTimestampFlag:F,rawExtraFieldNTFS:k,rawExtraFieldUnix:D,rawExtraFieldAES:E}=l,{dataDescriptorArray:v}=d,{rawFilename:A,lastAccessDate:U,creationDate:R,password:T,rawPassword:C,level:W,zip64:_,zip64UncompressedSize:B,zip64CompressedSize:N,zip64Offset:I,zip64DiskNumberStart:O,zipCrypto:L,dataDescriptor:H,directory:Z,executable:P,versionMadeBy:V,rawComment:q,rawExtraField:K,useWebWorkers:j,onstart:X,onprogress:G,onend:Y,signal:J,encryptionStrength:$,extendedTimestamp:ee,msDosCompatible:te,internalFileAttributes:re,externalFileAttributes:se,uid:ne,gid:ie,unixMode:oe,setuid:ce,setgid:le,sticky:de,unixExternalUpper:ue,msdosAttributesRaw:pe,msdosAttributes:fe,useCompressionStream:he,passThrough:we}=c,me={lock:n,versionMadeBy:V,zip64:_,directory:!!Z,executable:!!P,filenameUTF8:!0,rawFilename:A,commentUTF8:!0,rawComment:q,rawExtraFieldZip64:z,localExtraFieldZip64Length:S,rawExtraFieldExtendedTimestamp:x,rawExtraFieldNTFS:k,rawExtraFieldUnix:D,rawExtraFieldAES:E,rawExtraField:K,extendedTimestamp:ee,msDosCompatible:te,internalFileAttributes:re,externalFileAttributes:se,diskNumberStart:s,uid:ne,gid:ie,unixMode:oe,setuid:ce,setgid:le,sticky:de,unixExternalUpper:ue,msdosAttributesRaw:pe,msdosAttributes:fe};let{signature:ge,uncompressedSize:ye}=c,be=0;we||(ye=0);const{writable:ze}=t;if(e){e.chunkSize=ae(o);const r=e.readable,s=e.size,n={options:{codecType:Xt,level:W,rawPassword:C,password:T,encryptionStrength:$,zipCrypto:m&&L,passwordVerification:m&&L&&w>>8&M,signed:!we,compressed:g&&!we,encrypted:m&&!we,useWebWorkers:j,useCompressionStream:he,transferStreams:!1},config:o,streamOptions:{signal:J,size:s,onstart:X,onprogress:G,onend:Y}};try{const e=await lr({readable:r,writable:ze},n);be=e.outputSize,t.size+=be,we||(ye=e.inputSize,ge=e.signature)}catch(e){throw e.outputSize!==Q&&(t.size+=e.outputSize),e}}return(({signature:e,compressedSize:t,uncompressedSize:r,headerInfo:s,dataDescriptorInfo:n},{zip64:i,zipCrypto:o,dataDescriptor:c})=>{const{headerView:l,encrypted:d}=s,{dataDescriptorView:u,dataDescriptorOffset:p}=n;d&&!o||e===Q||(Hs(l,10,e),c&&Hs(u,p,e)),i?c&&(Zs(u,p+4,a(t)),Zs(u,p+12,a(r))):(Hs(l,14,t),Hs(l,18,r),c&&(Hs(u,p+4,t),Hs(u,p+8,r)))})({signature:ge,compressedSize:be,uncompressedSize:ye,headerInfo:l,dataDescriptorInfo:d},c),H&&await _s(t,v),r.assign(me,{uncompressedSize:ye,compressedSize:be,lastModDate:h,rawLastModDate:w,creationDate:R,lastAccessDate:U,encrypted:m,zipCrypto:L,size:u+be,compressionMethod:b,version:y,headerArray:p,headerView:f,signature:ge,extraFieldExtendedTimestampFlag:F,zip64UncompressedSize:B,zip64CompressedSize:N,zip64Offset:I,zip64DiskNumberStart:O}),me})(n,E,A,i,e.config,o);const{zip64:I}=A;if(D=!1,c.set(s,A),A.filename=s,z){const[r]=await y.all([v,E.writable.getWriter().close(),t]);await U(),F=!0,A.diskNumberStart=l.diskNumber,A.offset=e.offset-l.diskOffset,I&&Ws(A),(({rawFilename:e,encrypted:t,zip64:r,localExtraFieldZip64Length:s,signature:n,compressedSize:i,uncompressedSize:o,zip64UncompressedSize:c,zip64CompressedSize:l},d,{dataDescriptor:u})=>{if(u||(t||Hs(d,14,n),l||Hs(d,18,i),c||Hs(d,22,o)),r&&s){let t=G+qs(e)+4;c&&(Zs(d,t,a(o)),t+=8),l&&(Zs(d,t,a(i)),t+=8)}})(A,W,o),await R(S),await _s(l,B),await r.stream().pipeTo(S,{preventClose:!0,preventAbort:!0,signal:w}),l.size+=E.size,F=!1}else A.offset=e.offset-C,I&&Ws(A);if(A.offset>T&&!I)throw new p(Es);return e.offset+=A.size,A}catch(t){if(z&&F||!z&&D){if(e.hasCorruptedEntries=!0,t)try{t.corruptedEntry=!0}catch{}z?e.offset+=E.size:e.offset=E.size}throw c.delete(s),t}finally{z&&e.bufferedWrites--,x&&x(),S&&S()}async function U(){e.writerLocked=!0;const{lockWriter:t}=e;e.lockWriter=new y(t=>S=()=>{e.writerLocked=!1,t()}),await t}async function R(e){qs(m.localHeaderArray)>l.availableSize&&(l.availableSize=0,await _s(e,new f))}})(e,s,n,{headerInfo:_e,dataDescriptorInfo:Be,metadataSize:Ne},c)}finally{e.pendingEntriesSize-=ke}return r.assign(Ie,{name:s,comment:L,extraField:xe}),new Kr(Ie)})(c,e,s,n),l.add(w),await w}catch(t){throw c.filenames.delete(e),t}finally{l.delete(w);const e=Ts.shift();e?e():Rs--}}remove(e){const{filenames:t,files:r}=this;if("string"==typeof e&&(e=r.get(e)),e&&e.filename!==Q){const{filename:s}=e;if(t.has(s)&&r.has(s))return t.delete(s),r.delete(s),!0}return!1}async close(e=new f,r={}){const{pendingAddFileCalls:s,writer:n}=this,{writable:o}=n;for(;s.size;)await y.allSettled(t.from(s));return await(async(e,r,s)=>{const{files:n,writer:o}=e,{diskOffset:c}=o;let{diskNumber:l}=o,d=0,u=0,h=e.offset-c,w=n.size;for(const[,e]of n){const{rawFilename:t,rawExtraFieldZip64:r,rawExtraFieldAES:s,rawComment:n,rawExtraFieldNTFS:a,rawExtraFieldUnix:o,rawExtraField:c,extendedTimestamp:l,extraFieldExtendedTimestampFlag:d,lastModDate:p}=e;let h;if(l){h=new f(9);const e=Vs(h);Ls(e,0,Z),Ls(e,2,5),Os(e,4,d),Hs(e,5,i.floor(p.getTime()/1e3))}else h=new f;e.rawExtraFieldExtendedTimestamp=h,u+=46+qs(t,n,r,s,a,o,h,c)}const m=new f(u),g=Vs(m);await Ze(o);let y=0;for(const[e,r]of t.from(n.values()).entries()){const{offset:t,rawFilename:a,rawExtraFieldZip64:i,rawExtraFieldAES:c,rawExtraFieldExtendedTimestamp:l,rawExtraFieldNTFS:u,rawExtraFieldUnix:p,rawExtraField:f,rawComment:h,versionMadeBy:w,headerArray:b,headerView:z,zip64:S,zip64UncompressedSize:x,zip64CompressedSize:F,zip64DiskNumberStart:k,zip64Offset:D,internalFileAttributes:E,externalFileAttributes:v,diskNumberStart:A,uncompressedSize:U,compressedSize:R}=r,M=qs(i,c,l,u,p,f);Hs(g,d,N),Ls(g,d+4,w),x||Hs(z,18,U),F||Hs(z,14,R),Ps(m,b,d+6);let W=d+G;if(Ls(g,W,M),W+=2,Ls(g,W,qs(h)),W+=2,Ls(g,W,S&&k?C:A),W+=2,Ls(g,W,E),W+=2,v&&Hs(g,W,v),W+=4,Hs(g,W,S&&D?T:t),W+=4,Ps(m,a,W),W+=qs(a),Ps(m,i,W),W+=qs(i),Ps(m,c,W),W+=qs(c),Ps(m,l,W),W+=qs(l),Ps(m,u,W),W+=qs(u),Ps(m,p,W),W+=qs(p),Ps(m,f,W),W+=qs(f),Ps(m,h,W),W+=qs(h),d-y>o.availableSize&&(o.availableSize=0,await _s(o,m.slice(y,d)),y=d),d=W,s.onprogress)try{await s.onprogress(e+1,n.size,new Kr(r))}catch{}}await _s(o,y?m.slice(y):m);let b=o.diskNumber;const{availableSize:z}=o;H>z&&b++;let S=Ns(e,s,Tr);if(h>T||u>T||w>C||b>C){if(!1===S)throw new p(Es);S=!0}const x=new f(S?98:H),F=Vs(x);d=0,S&&(Hs(F,0,O),Zs(F,4,a(44)),Ls(F,12,45),Ls(F,14,45),Hs(F,16,b),Hs(F,20,l),Zs(F,24,a(w)),Zs(F,32,a(w)),Zs(F,40,a(u)),Zs(F,48,a(h)),Hs(F,56,L),Zs(F,64,a(h)+a(u)),Hs(F,72,b+1),Ns(e,s,es,!0)&&(b=C,l=C),w=C,h=T,u=T,d+=76),Hs(F,d,I),Ls(F,d+4,b),Ls(F,d+6,l),Ls(F,d+8,w),Ls(F,d+10,w),Hs(F,d+12,u),Hs(F,d+16,h);const k=qs(r);if(k){if(k>C)throw new p("Zip file comment exceeds 64KB");Ls(F,d+20,k)}await _s(o,x),k&&await _s(o,r)})(this,e,r),Ns(this,r,$r)||await o.getWriter().close(),n.getData?n.getData():o}}function Ms(e){if(e===Q)return new f;{const t=new f(4);Vs(t).setUint32(0,e,!0);let r=4;for(;r>1&&0===t[r-1];)r--;return t.subarray(0,r)}}function Ws({compressedSize:e,uncompressedSize:t,offset:r,diskNumberStart:s,zip64UncompressedSize:n,zip64CompressedSize:i,zip64Offset:o,zip64DiskNumberStart:c,rawExtraFieldZip64:l}){const d=Vs(l);let u=4;n&&(Zs(d,u,a(t)),u+=8),i&&(Zs(d,u,a(e)),u+=8),o&&(Zs(d,u,a(r)),u+=8),c&&Hs(d,u,s)}async function _s(e,t){const{writable:r}=e,s=r.getWriter();try{await s.ready,e.size+=qs(t),await s.write(t)}finally{s.releaseLock()}}function Bs(e){if(e)return(a(e.getTime())+a(116444736e5))*a(1e4)}function Ns(e,t,r,s){const n=t[r]===Q?e.options[r]:t[r];return n===Q?s:n}function Is(e){return e+5*(i.floor(e/16383)+1)}function Os(e,t,r){e.setUint8(t,r)}function Ls(e,t,r){e.setUint16(t,r,!0)}function Hs(e,t,r){e.setUint32(t,r,!0)}function Zs(e,t,r){e.setBigUint64(t,r,!0)}function Ps(e,t,r){e.set(t,r)}function Vs(e){return new m(e.buffer)}function qs(...e){let t=0;return e.forEach(e=>e&&(t+=e.length)),t}function Ks({version:e,bitFlag:t,compressionMethod:r,uncompressedSize:s,compressedSize:n,lastModDate:a,rawFilename:i,zip64CompressedSize:o,zip64UncompressedSize:c,extraFieldLength:l}){const d=new f(26),u=Vs(d);Ls(u,0,e),Ls(u,2,t),Ls(u,4,r);const p=new w(1),h=Vs(p);Ls(h,0,(a.getHours()<<6|a.getMinutes())<<5|a.getSeconds()/2),Ls(h,2,(a.getFullYear()-1980<<4|a.getMonth()+1)<<5|a.getDate());const m=p[0];return Hs(u,6,m),(o||n!==Q)&&Hs(u,14,o?T:n),(c||s!==Q)&&Hs(u,18,c?T:s),Ls(u,22,qs(i)),Ls(u,24,l),{headerArray:d,headerView:u,rawLastModDate:m}}function js(e,t,r,s,n){let a=0;return t&&(a|=P),r&&(a|=8),8!=n&&9!=n||(0>e||e>3||(a|=6),e>3&&5>=e&&(a|=4),9==e&&(a|=2)),s&&(a|=1),a}class Xs{constructor(e,t,s,n){const a=this;if(e.root&&n&&n.getChildByName(t))throw new p("Entry filename already exists");s||(s={}),r.assign(a,{fs:e,name:t,data:s.data,options:s.options,id:e.entries.length,parent:n,children:[],uncompressedSize:s.uncompressedSize||0,passThrough:s.passThrough}),e.entries.push(a),n&&a.parent.children.push(a)}moveTo(e){this.fs.move(this,e)}getFullname(){return this.getRelativeName()}getRelativeName(e=this.fs.root){let t=this.name,r=this.parent;for(;r&&r!=e;)t=(r.name?r.name+"/":"")+t,r=r.parent;return t}isDescendantOf(e){let t=this.parent;for(;t&&t.id!=e.id;)t=t.parent;return!!t}rename(e){const t=this.parent;if(t&&t.getChildByName(e))throw new p("Entry filename already exists");this.name=e}}class Gs extends Xs{constructor(e,t,r,s){super(e,t,r,s);const n=this;n.Reader=r.Reader,n.Writer=r.Writer,r.getData&&(n.getData=r.getData)}clone(){return new Gs(this.fs,this.name,this)}async getData(e,t={}){const r=this;if(!e||e.constructor==r.Writer&&r.data)return r.data;{const s=r.reader=new r.Reader(r.data,t),n=r.data?r.data.uncompressedSize:s.size;await y.all([Ze(s),Ze(e,n)]);const{readable:a}=s;return r.uncompressedSize=s.size,await a.pipeTo(e.writable),e.getData?e.getData():e.writable}}isPasswordProtected(){return this.data.encrypted}async checkPassword(e,t={}){const r=this;if(!r.isPasswordProtected())return!0;t.password=e,t.checkPasswordOnly=!0;try{return await r.data.getData(null,t),!0}catch(e){if(e.message==et)return!1;throw e}}getText(e,t){return this.getData(new Se(e),t)}getBlob(e,t){return this.getData(new be(e),t)}getData64URI(e,t){return this.getData(new ge(e),t)}getUint8Array(e){return this.getData(new Ne,e)}getWritable(e=new E,t){return this.getData({writable:e},t)}getArrayBuffer(e){return this.data.arrayBuffer(e)}replaceBlob(e){r.assign(this,{data:e,Reader:ye,Writer:be,reader:null})}replaceText(e){r.assign(this,{data:e,Reader:ze,Writer:Se,reader:null})}replaceData64URI(e){r.assign(this,{data:e,Reader:me,Writer:ge,reader:null})}replaceUint8Array(e){r.assign(this,{data:e,Reader:Be,Writer:Ne,reader:null})}replaceReadable(e){r.assign(this,{data:null,Reader:()=>({readable:e}),Writer:null,reader:null})}}class Ys extends Xs{constructor(e,t,r,s){super(e,t,r,s),this.directory=!0}clone(e){const t=this,r=new Ys(t.fs,t.name);return e&&(r.children=t.children.map(t=>{const s=t.clone(e);return s.parent=r,s})),r}addDirectory(e,t){return nn(this,e,{options:t},!0)}addText(e,t,r={}){return nn(this,e,{data:t,Reader:ze,Writer:Se,options:r,uncompressedSize:t.length})}addBlob(e,t,r={}){return nn(this,e,{data:t,Reader:ye,Writer:be,options:r,uncompressedSize:t.size})}addData64URI(e,t,r={}){let s=t.length;for(;"="==t.charAt(s-1);)s--;const n=t.indexOf(",")+1;return nn(this,e,{data:t,Reader:me,Writer:ge,options:r,uncompressedSize:i.floor(.75*(s-n))})}addUint8Array(e,t,r={}){return nn(this,e,{data:t,Reader:Be,Writer:Ne,options:r,uncompressedSize:t.length})}addHttpContent(e,t,r={}){return nn(this,e,{data:t,Reader:class extends _e{constructor(e){super(e,r)}},options:r})}addReadable(e,t,r={}){return nn(this,e,{Reader:()=>({readable:t}),options:r})}addFileSystemEntry(e,t={}){return tn(this,e,t)}addFileSystemHandle(e,t={}){return tn(this,e,t)}addFile(e,t={}){return t.lastModDate||(t.lastModDate=new o(e.lastModified)),nn(this,e.name,{data:e,Reader:()=>({readable:e.stream(),size:e.size}),options:t,uncompressedSize:e.size})}addData(e,t){return nn(this,e,t)}importBlob(e,t){return this.importZip(new ye(e),t)}importData64URI(e,t){return this.importZip(new me(e),t)}importUint8Array(e,t){return this.importZip(new Be(e),t)}importHttpContent(e,t){return this.importZip(new _e(e,t),t)}importReadable(e,t){return this.importZip({readable:e},t)}exportBlob(e={}){return this.exportZip(new be(e.mimeType||"application/zip"),e)}exportData64URI(e={}){return this.exportZip(new ge(e.mimeType||"application/zip"),e)}exportUint8Array(e={}){return this.exportZip(new Ne,e)}async exportWritable(e=new E,t={}){return await this.exportZip({writable:e},t),e}async importZip(e,t={}){await Ze(e);const s=new ds(e,t),n=[],a=await s.getEntries();for(const e of a){let s=this;try{const a=e.filename.split("/"),i=a.pop();a.forEach((t,r)=>{const i=s;s=s.getChildByName(t),s||(s=new Ys(this.fs,t,{data:r==a.length-1?e:null},i),n.push(s))}),e.directory||n.push(nn(s,i,{data:e,Reader:Qs(r.assign({},t)),uncompressedSize:e.uncompressedSize,passThrough:t.passThrough}))}catch(t){try{t.cause={entry:e}}catch{}throw t}}return n}async exportZip(e,s){const n=this;s.bufferedWrite===Q&&(s.bufferedWrite=!0),await y.all([$s(n,s.readerOptions),Ze(e)]);const a=new Cs(e,s);return await(async(e,s,n,a)=>{const i=s,o=new c;await async function e(s,c){async function l(c){const l=a.relativePath?c.getRelativeName(i):c.getFullname(),d=c.options||{};let u={};if(c.data instanceof Kr){const{externalFileAttributes:e,versionMadeBy:t,comment:s,lastModDate:n,creationDate:a,lastAccessDate:i,uncompressedSize:o,encrypted:l,zipCrypto:d,signature:p,compressionMethod:f,extraFieldAES:h}=c.data;if(u={externalFileAttributes:e,versionMadeBy:t,comment:s,lastModDate:n,creationDate:a,lastAccessDate:i},c.passThrough){let e,t;0===f&&(e=0),h&&(t=h.strength),u=r.assign(u,{passThrough:!0,encrypted:l,zipCrypto:d,signature:p,uncompressedSize:o,level:e,encryptionStrength:t,compressionMethod:f})}}await s.add(l,c.reader,r.assign({},a,u,d,{directory:c.directory,onprogress:async e=>{if(a.onprogress){o.set(l,e);try{await a.onprogress(t.from(o.values()).reduce((e,t)=>e+t),n)}catch{}}}})),await e(s,c)}await(async()=>{if(a.bufferedWrite)await y.allSettled(c.children.map(l));else for(const e of c.children)await l(e)})()}(e,s)})(a,n,(e=>{let t=0;return e.forEach(function e(r){t+=r.uncompressedSize,r.children&&r.children.forEach(e)}),t})([n]),s),await a.close(),e.getData?e.getData():e.writable}getChildByName(e){const t=this.children;for(let r=0;r<t.length;r++){const s=t[r];if(s.name==e)return s}}isPasswordProtected(){const e=this.children;for(let t=0;t<e.length;t++)if(e[t].isPasswordProtected())return!0;return!1}async checkPassword(e,t={}){const r=this.children;return!(await y.all(r.map(r=>r.checkPassword(e,t)))).includes(!1)}}const Js={FS:class{constructor(){sn(this)}get children(){return this.root.children}remove(e){en(e),this.entries[e.id]=null}move(e,t){if(e==this.root)throw new p("Root directory cannot be moved");if(!t.directory)throw new p("Target entry is not a directory");if(t.isDescendantOf(e))throw new p("Entry is a ancestor of target entry");if(e!=t){if(t.getChildByName(e.name))throw new p("Entry filename already exists");en(e),e.parent=t,t.children.push(e)}}find(e){const t=e.split("/");let r=this.root;for(let e=0;r&&e<t.length;e++)r=r.getChildByName(t[e]);return r}getById(e){return this.entries[e]}getChildByName(e){return this.root.getChildByName(e)}addDirectory(e,t){return this.root.addDirectory(e,t)}addText(e,t,r){return this.root.addText(e,t,r)}addBlob(e,t,r){return this.root.addBlob(e,t,r)}addData64URI(e,t,r){return this.root.addData64URI(e,t,r)}addUint8Array(e,t,r){return this.root.addUint8Array(e,t,r)}addHttpContent(e,t,r){return this.root.addHttpContent(e,t,r)}addReadable(e,t,r){return this.root.addReadable(e,t,r)}addFileSystemEntry(e,t){return this.root.addFileSystemEntry(e,t)}addFileSystemHandle(e,t){return this.root.addFileSystemHandle(e,t)}addFile(e,t){return this.root.addFile(e,t)}addData(e,t){return this.root.addData(e,t)}importBlob(e,t){return sn(this),this.root.importBlob(e,t)}importData64URI(e,t){return sn(this),this.root.importData64URI(e,t)}importUint8Array(e,t){return sn(this),this.root.importUint8Array(e,t)}importHttpContent(e,t){return sn(this),this.root.importHttpContent(e,t)}importReadable(e,t){return sn(this),this.root.importReadable(e,t)}importZip(e,t){return this.root.importZip(e,t)}exportBlob(e){return this.root.exportBlob(e)}exportData64URI(e){return this.root.exportData64URI(e)}exportUint8Array(e){return this.root.exportUint8Array(e)}exportWritable(e,t){return this.root.exportWritable(e,t)}isPasswordProtected(){return this.root.isPasswordProtected()}checkPassword(e,t){return this.root.checkPassword(e,t)}},ZipDirectoryEntry:Ys,ZipFileEntry:Gs};function Qs(e){return class extends he{constructor(e,t={}){super(),this.entry=e,this.options=t}async init(){const t=this;t.size=t.entry.uncompressedSize;const s=await t.entry.getData(new be,r.assign({},t.options,e));t.data=s,t.blobReader=new ye(s),super.init()}readUint8Array(e,t){return this.blobReader.readUint8Array(e,t)}}}async function $s(e,t){e.children.length&&await y.all(e.children.map(async e=>{if(e.directory)await $s(e,t);else{const r=e.reader=new e.Reader(e.data,t);try{await Ze(r)}catch(t){try{t.entryId=e.id,t.cause={entry:e}}catch{}throw t}e.uncompressedSize=r.size}}))}function en(e){if(e.parent){const t=e.parent.children;t.forEach((r,s)=>{r.id==e.id&&t.splice(s,1)})}}function tn(e,t,s){return async function e(t,n,a){if(n)try{if((n.isFile||n.isDirectory)&&(n=await rn(n)),"file"==n.kind){const e=await n.getFile();a.push(t.addData(e.name,{Reader:()=>({readable:e.stream(),size:e.size}),options:r.assign({},{lastModDate:new o(e.lastModified)},s),uncompressedSize:e.size}))}else if("directory"==n.kind){const r=t.addDirectory(n.name);a.push(r);for await(const t of n.values())await e(r,t,a)}}catch(e){const t=e.message+(n?" ("+n.name+")":"");throw new p(t)}return a}(e,t,[])}async function rn(e){const t={name:e.name};if(e.isFile&&(t.kind="file",t.getFile=()=>new y((t,r)=>e.file(t,r))),e.isDirectory){t.kind="directory";const r=await(async e=>{const t=[];function r(e,s,n){e.readEntries(async a=>{if(a.length){for(const e of a)t.push(await rn(e));r(e,s,n)}else s(t)},n)}return await new y((t,s)=>r(e.createReader(),t,s)),{[Symbol.iterator](){let e=0;return{next(){const r={value:t[e],done:e==t.length};return e++,r}}}}})(e);t.values=()=>r}return t}function sn(e){e.entries=[],e.root=new Ys(e)}function nn(e,t,r,s){if(e.directory)return s?new Ys(e.fs,t,r,e):new Gs(e.fs,t,r,e);throw new p("Parent entry is not a directory")}e.fs=Js});
1
+ ((e,t)=>{"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).zip={})})(this,function(e){"use strict";const{Array:t,Object:r,String:s,Number:n,BigInt:a,Math:i,Date:o,Map:c,Set:l,Response:d,URL:u,Error:p,Uint8Array:f,Uint16Array:h,Uint32Array:w,DataView:g,Blob:m,Promise:y,TextEncoder:b,TextDecoder:z,document:S,crypto:x,btoa:F,TransformStream:k,ReadableStream:D,WritableStream:E,CompressionStream:v,DecompressionStream:A,navigator:U,Worker:R}="undefined"!=typeof globalThis?globalThis:this||self,T=4294967295,C=65535,M=255,W=67324752,_=134695760,B=_,N=33639248,I=101010256,O=101075792,L=117853008,H=22,Z=21589,P=2048,V=16384,q=2048,K=1024,j=512,X="/",G=30,Y=new o(2107,11,31),J=new o(1980,0,1),Q=void 0,$="undefined",ee="function";let te=2;try{typeof U!=$&&U.hardwareConcurrency&&(te=U.hardwareConcurrency)}catch{}const re={workerURI:"./core/web-worker-wasm.js",wasmURI:"./core/streams/zlib-wasm/zlib-streams.wasm",chunkSize:65536,maxWorkers:te,terminateWorkerTimeout:5e3,useWebWorkers:!0,useCompressionStream:!0,CompressionStream:typeof v!=$&&v,DecompressionStream:typeof A!=$&&A},se=r.assign({},re);function ne(){return se}function ae(e){return i.max(e.chunkSize,64)}const ie="HTTP error ",oe="HTTP Range not supported",ce="Range",le="GET",de="bytes",ue=65536,pe="writable";class fe{constructor(){this.size=0}init(){this.initialized=!0}}class he extends fe{get readable(){const e=this,{chunkSize:t=ue}=e,r=new D({start(){this.chunkOffset=0},async pull(s){const{offset:n=0,size:a,diskNumberStart:o}=r,{chunkOffset:c}=this,l=a===Q?t:i.min(t,a-c),d=await Pe(e,n+c,l,o);s.enqueue(d),c+t>a||a===Q&&!d.length&&l?s.close():this.chunkOffset+=t}});return r}}class we extends fe{constructor(){super();const e=this,t=new E({write(t){if(!e.initialized)throw new p("Writer not initialized");return e.writeUint8Array(t)}});r.defineProperty(e,pe,{get:()=>t})}writeUint8Array(){}}class ge extends he{constructor(e){super();let t=e.length;for(;"="==e.charAt(t-1);)t--;const s=e.indexOf(",")+1;r.assign(this,{dataURI:e,dataStart:s,size:i.floor(.75*(t-s))})}readUint8Array(e,t){const{dataStart:r,dataURI:s}=this,n=new f(t),a=4*i.floor(e/3),o=atob(s.substring(a+r,4*i.ceil((e+t)/3)+r)),c=e-3*i.floor(a/4);let l=0;for(let e=c;c+t>e&&e<o.length;e++)n[e-c]=o.charCodeAt(e),l++;return l<n.length?n.subarray(0,l):n}}class me extends we{constructor(e){super(),r.assign(this,{data:"data:"+(e||"")+";base64,",pending:[]})}writeUint8Array(e){const t=this;let r=0,n=t.pending;const a=t.pending.length;for(t.pending="",r=0;r<3*i.floor((a+e.length)/3)-a;r++)n+=s.fromCharCode(e[r]);for(;r<e.length;r++)t.pending+=s.fromCharCode(e[r]);n.length&&(n.length>2?t.data+=F(n):t.pending+=n)}getData(){return this.data+F(this.pending)}}class ye extends he{constructor(e){super(),r.assign(this,{blob:e,size:e.size})}async readUint8Array(e,t){const r=this,s=e+t,n=e||s<r.size?r.blob.slice(e,s):r.blob;let a=await n.arrayBuffer();return a.byteLength>t&&(a=a.slice(e,s)),new f(a)}}class be extends fe{constructor(e){super();const t=new k,s=[];e&&s.push(["Content-Type",e]),r.defineProperty(this,pe,{get:()=>t.writable}),this.blob=new d(t.readable,{headers:s}).blob()}getData(){return this.blob}}class ze extends ye{constructor(e){super(new m([e],{type:"text/plain"}))}}class Se extends be{constructor(e){super(e),r.assign(this,{encoding:e,utf8:!e||"utf-8"==e.toLowerCase()})}async getData(){const{encoding:e,utf8:t}=this,s=await super.getData();if(s.text&&t)return s.text();{const t=new FileReader;return new y((n,a)=>{r.assign(t,{onload:({target:e})=>n(e.result),onerror:()=>a(t.error)}),t.readAsText(s,e)})}}}class xe extends he{constructor(e,t){super(),ke(this,e,t)}async init(){await De(this,Me,Ue),super.init()}readUint8Array(e,t){return Ee(this,e,t,Me,Ue)}}class Fe extends he{constructor(e,t){super(),ke(this,e,t)}async init(){await De(this,We,Re),super.init()}readUint8Array(e,t){return Ee(this,e,t,We,Re)}}function ke(e,t,s){const{preventHeadRequest:n,useRangeHeader:a,forceRangeRequests:i,combineSizeEocd:o}=s;delete(s=r.assign({},s)).preventHeadRequest,delete s.useRangeHeader,delete s.forceRangeRequests,delete s.combineSizeEocd,delete s.useXHR,r.assign(e,{url:t,options:s,preventHeadRequest:n,useRangeHeader:a,forceRangeRequests:i,combineSizeEocd:o})}async function De(e,t,r){const{url:s,preventHeadRequest:a,useRangeHeader:i,forceRangeRequests:o,combineSizeEocd:c}=e;if((e=>{const{baseURI:t}=ne(),{protocol:r}=new u(e,t);return"http:"==r||"https:"==r})(s)&&(i||o)&&(void 0===a||a)){const s=await t(le,e,ve(e,c?-22:void 0)),a=s.headers.get("Accept-Ranges");if(!(o||a&&a.toLowerCase()==de))throw new p(oe);{let a;c&&(e.eocdCache=new f(await s.arrayBuffer()));const i=s.headers.get("Content-Range");if(i){const e=i.trim().split(/\s*\/\s*/);if(e.length){const t=e[1];t&&"*"!=t&&(a=n(t))}}a===Q?await Ce(e,t,r):e.size=a}}else await Ce(e,t,r)}async function Ee(e,t,r,s,n){const{useRangeHeader:a,forceRangeRequests:i,eocdCache:o,size:c,options:l}=e;if(a||i){if(o&&t==c-H&&r==H)return o;if(c>t){t+r>c&&(r=c-t);const n=await s(le,e,ve(e,t,r));if(206!=n.status)throw new p(oe);return new f(await n.arrayBuffer())}return new f}{const{data:s}=e;return s||await n(e,l),new f(e.data.subarray(t,t+r))}}function ve(e,t=0,s=1){return r.assign({},Ae(e),{[ce]:de+"="+(0>t?t:t+"-"+(t+s-1))})}function Ae({options:e}){const{headers:t}=e;if(t)return Symbol.iterator in t?r.fromEntries(t):t}async function Ue(e){await Te(e,Me)}async function Re(e){await Te(e,We)}async function Te(e,t){const r=await t(le,e,Ae(e));e.data=new f(await r.arrayBuffer()),e.size||(e.size=e.data.length)}async function Ce(e,t,r){if(e.preventHeadRequest)await r(e,e.options);else{const s=(await t("HEAD",e,Ae(e))).headers.get("Content-Length");s?e.size=n(s):await r(e,e.options)}}async function Me(e,{options:t,url:s},n){const a=await fetch(s,r.assign({},t,{method:e,headers:n}));if(400>a.status)return a;throw 416==a.status?new p(oe):new p(ie+(a.statusText||a.status))}function We(e,{url:t},s){return new y((n,a)=>{const i=new XMLHttpRequest;if(i.addEventListener("load",()=>{if(400>i.status){const e=[];i.getAllResponseHeaders().trim().split(/[\r\n]+/).forEach(t=>{const r=t.trim().split(/\s*:\s*/);r[0]=r[0].trim().replace(/^[a-z]|-[a-z]/g,e=>e.toUpperCase()),e.push(r)}),n({status:i.status,arrayBuffer:()=>i.response,headers:new c(e)})}else a(416==i.status?new p(oe):new p(ie+(i.statusText||i.status)))},!1),i.addEventListener("error",e=>a(e.detail?e.detail.error:new p("Network error")),!1),i.open(e,t),s)for(const e of r.entries(s))i.setRequestHeader(e[0],e[1]);i.responseType="arraybuffer",i.send()})}class _e extends he{constructor(e,t={}){super(),r.assign(this,{url:e,reader:t.useXHR?new Fe(e,t):new xe(e,t)})}set size(e){}get size(){return this.reader.size}async init(){await this.reader.init(),super.init()}readUint8Array(e,t){return this.reader.readUint8Array(e,t)}}class Be extends he{constructor(e){super(),e=new f(e.buffer,e.byteOffset,e.byteLength),r.assign(this,{array:e,size:e.length})}readUint8Array(e,t){return this.array.slice(e,e+t)}}class Ne extends we{constructor(e){super(),this.defaultBufferSize=e||262144}init(e=0){r.assign(this,{offset:0,array:new f(e>0?e:this.defaultBufferSize)}),super.init()}writeUint8Array(e){const t=this,r=t.offset+e.length;if(r>t.array.length){let e=t.array.length?2*t.array.length:t.defaultBufferSize;for(;r>e;)e*=2;const s=t.array;t.array=new f(e),t.array.set(s)}t.array.set(e,t.offset),t.offset+=e.length}getData(){return this.offset===this.array.length?this.array:this.array.slice(0,this.offset)}}class Ie extends he{constructor(e){super(),this.readers=e}async init(){const e=this,{readers:t}=e;e.lastDiskNumber=0,e.lastDiskOffset=0,await y.all(t.map(async(r,s)=>{await r.init(),s!=t.length-1&&(e.lastDiskOffset+=r.size),e.size+=r.size})),super.init()}async readUint8Array(e,t,r=0){const s=this,{readers:n}=this;let a,o=r;-1==o&&(o=n.length-1);let c=e;for(;n[o]&&c>=n[o].size;)c-=n[o].size,o++;const l=n[o];if(l){const n=l.size;if(c+t>n){const i=n-c;a=new f(t);const o=await Pe(l,c,i);a.set(o,0);const d=await s.readUint8Array(e+i,t-i,r);a.set(d,i),o.length+d.length<t&&(a=a.subarray(0,o.length+d.length))}else a=await Pe(l,c,t)}else a=new f;return s.lastDiskNumber=i.max(o,s.lastDiskNumber),a}}class Oe extends fe{constructor(e,t=4294967295){super();const s=this;let n,a,i;r.assign(s,{diskNumber:0,diskOffset:0,size:0,maxSize:t,availableSize:t});const o=new E({async write(t){const{availableSize:r}=s;if(i)t.length<r?await c(t):(await c(t.subarray(0,r)),await l(),s.diskOffset+=n.size,s.diskNumber++,i=null,await this.write(t.subarray(r)));else{const{value:r,done:o}=await e.next();if(o&&!r)throw new p("Writer iterator completed too soon");n=r,n.size=0,n.maxSize&&(s.maxSize=n.maxSize),s.availableSize=s.maxSize,await Ze(n),a=r.writable,i=a.getWriter(),await this.write(t)}},async close(){await i.ready,await l()}});async function c(e){const t=e.length;t&&(await i.ready,await i.write(e),n.size+=t,s.size+=t,s.availableSize-=t)}async function l(){await i.close()}r.defineProperty(s,pe,{get:()=>o})}}class Le{constructor(e){return t.isArray(e)&&(e=new Ie(e)),e instanceof D&&(e={readable:e}),e}}class He{constructor(e){return e.writable===Q&&typeof e.next==ee&&(e=new Oe(e)),e instanceof E&&(e={writable:e}),e.size===Q&&(e.size=0),e instanceof Oe||r.assign(e,{diskNumber:0,diskOffset:0,availableSize:1/0,maxSize:1/0}),e}}async function Ze(e,t){if(!e.init||e.initialized)return y.resolve();await e.init(t)}function Pe(e,t,r,s){return e.readUint8Array(t,r,s)}const Ve=[];for(let e=0;256>e;e++){let t=e;for(let e=0;8>e;e++)1&t?t=t>>>1^3988292384:t>>>=1;Ve[e]=t}class qe{constructor(e){this.crc=e||-1}append(e){let t=0|this.crc;for(let r=0,s=0|e.length;s>r;r++)t=t>>>8^Ve[255&(t^e[r])];this.crc=t}get(){return~this.crc}}class Ke extends k{constructor(){let e;const t=new qe;super({transform(e,r){t.append(e),r.enqueue(e)},flush(){const r=new f(4);new g(r.buffer).setUint32(0,t.get()),e.value=r}}),e=this}}function je(e){if(typeof b==$){const t=new f((e=unescape(encodeURIComponent(e))).length);for(let r=0;r<t.length;r++)t[r]=e.charCodeAt(r);return t}return(new b).encode(e)}const Xe={concat(e,t){if(0===e.length||0===t.length)return e.concat(t);const r=e[e.length-1],s=Xe.getPartial(r);return 32===s?e.concat(t):Xe._shiftRight(t,s,0|r,e.slice(0,e.length-1))},bitLength(e){const t=e.length;if(0===t)return 0;const r=e[t-1];return 32*(t-1)+Xe.getPartial(r)},clamp(e,t){if(32*e.length<t)return e;const r=(e=e.slice(0,i.ceil(t/32))).length;return t&=31,r>0&&t&&(e[r-1]=Xe.partial(t,e[r-1]&2147483648>>t-1,1)),e},partial:(e,t,r)=>32===e?t:(r?0|t:t<<32-e)+1099511627776*e,getPartial:e=>i.round(e/1099511627776)||32,_shiftRight(e,t,r,s){for(void 0===s&&(s=[]);t>=32;t-=32)s.push(r),r=0;if(0===t)return s.concat(e);for(let n=0;n<e.length;n++)s.push(r|e[n]>>>t),r=e[n]<<32-t;const n=e.length?e[e.length-1]:0,a=Xe.getPartial(n);return s.push(Xe.partial(t+a&31,t+a>32?r:s.pop(),1)),s}},Ge={bytes:{fromBits(e){const t=Xe.bitLength(e)/8,r=new f(t);let s;for(let n=0;t>n;n++)3&n||(s=e[n/4]),r[n]=s>>>24,s<<=8;return r},toBits(e){const t=[];let r,s=0;for(r=0;r<e.length;r++)s=s<<8|e[r],3&~r||(t.push(s),s=0);return 3&r&&t.push(Xe.partial(8*(3&r),s)),t}}},Ye=class{constructor(e){const t=this;t.blockSize=512,t._init=[1732584193,4023233417,2562383102,271733878,3285377520],t._key=[1518500249,1859775393,2400959708,3395469782],e?(t._h=e._h.slice(0),t._buffer=e._buffer.slice(0),t._length=e._length):t.reset()}reset(){const e=this;return e._h=e._init.slice(0),e._buffer=[],e._length=0,e}update(e){const t=this;"string"==typeof e&&(e=Ge.utf8String.toBits(e));const r=t._buffer=Xe.concat(t._buffer,e),s=t._length,n=t._length=s+Xe.bitLength(e);if(n>9007199254740991)throw new p("Cannot hash more than 2^53 - 1 bits");const a=new w(r);let i=0;for(let e=t.blockSize+s-(t.blockSize+s&t.blockSize-1);n>=e;e+=t.blockSize)t._block(a.subarray(16*i,16*(i+1))),i+=1;return r.splice(0,16*i),t}finalize(){const e=this;let t=e._buffer;const r=e._h;t=Xe.concat(t,[Xe.partial(1,1)]);for(let e=t.length+2;15&e;e++)t.push(0);for(t.push(i.floor(e._length/4294967296)),t.push(0|e._length);t.length;)e._block(t.splice(0,16));return e.reset(),r}_f(e,t,r,s){return e>19?e>39?e>59?e>79?void 0:t^r^s:t&r|t&s|r&s:t^r^s:t&r|~t&s}_S(e,t){return t<<e|t>>>32-e}_block(e){const r=this,s=r._h,n=t(80);for(let t=0;16>t;t++)n[t]=e[t];let a=s[0],o=s[1],c=s[2],l=s[3],d=s[4];for(let e=0;79>=e;e++){16>e||(n[e]=r._S(1,n[e-3]^n[e-8]^n[e-14]^n[e-16]));const t=r._S(5,a)+r._f(e,o,c,l)+d+n[e]+r._key[i.floor(e/20)]|0;d=l,l=c,c=r._S(30,o),o=a,a=t}s[0]=s[0]+a|0,s[1]=s[1]+o|0,s[2]=s[2]+c|0,s[3]=s[3]+l|0,s[4]=s[4]+d|0}},Je={getRandomValues(e){const t=new w(e.buffer),r=e=>{let t=987654321;const r=4294967295;return()=>(t=36969*(65535&t)+(t>>16)&r,(((t<<16)+(e=18e3*(65535&e)+(e>>16)&r)&r)/4294967296+.5)*(i.random()>.5?1:-1))};for(let s,n=0;n<e.length;n+=4){const e=r(4294967296*(s||i.random()));s=987654071*e(),t[n/4]=4294967296*e()|0}return e}},Qe={importKey:e=>new Qe.hmacSha1(Ge.bytes.toBits(e)),pbkdf2(e,t,r,s){if(r=r||1e4,0>s||0>r)throw new p("invalid params to pbkdf2");const n=1+(s>>5)<<2;let a,i,o,c,l;const d=new ArrayBuffer(n),u=new g(d);let f=0;const h=Xe;for(t=Ge.bytes.toBits(t),l=1;(n||1)>f;l++){for(a=i=e.encrypt(h.concat(t,[l])),o=1;r>o;o++)for(i=e.encrypt(i),c=0;c<i.length;c++)a[c]^=i[c];for(o=0;(n||1)>f&&o<a.length;o++)u.setInt32(f,a[o]),f+=4}return d.slice(0,s/8)},hmacSha1:class{constructor(e){const t=this,r=t._hash=Ye,s=[[],[]];t._baseHash=[new r,new r];const n=t._baseHash[0].blockSize/32;e.length>n&&(e=(new r).update(e).finalize());for(let t=0;n>t;t++)s[0][t]=909522486^e[t],s[1][t]=1549556828^e[t];t._baseHash[0].update(s[0]),t._baseHash[1].update(s[1]),t._resultHash=new r(t._baseHash[0])}reset(){const e=this;e._resultHash=new e._hash(e._baseHash[0]),e._updated=!1}update(e){this._updated=!0,this._resultHash.update(e)}digest(){const e=this,t=e._resultHash.finalize(),r=new e._hash(e._baseHash[1]).update(t).finalize();return e.reset(),r}encrypt(e){if(this._updated)throw new p("encrypt on already updated hmac called!");return this.update(e),this.digest(e)}}},$e=typeof x!=$&&typeof x.getRandomValues==ee,et="Invalid password",tt="Invalid signature",rt="zipjs-abort-check-password";function st(e){return $e?x.getRandomValues(e):Je.getRandomValues(e)}const nt=16,at={name:"PBKDF2"},it=r.assign({hash:{name:"HMAC"}},at),ot=r.assign({iterations:1e3,hash:{name:"SHA-1"}},at),ct=["deriveBits"],lt=[8,12,16],dt=[16,24,32],ut=10,pt=[0,0,0,0],ft=typeof x!=$,ht=ft&&x.subtle,wt=ft&&typeof ht!=$,gt=Ge.bytes,mt=class{constructor(e){const t=this;t._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],t._tables[0][0][0]||t._precompute();const r=t._tables[0][4],s=t._tables[1],n=e.length;let a,i,o,c=1;if(4!==n&&6!==n&&8!==n)throw new p("invalid aes key size");for(t._key=[i=e.slice(0),o=[]],a=n;4*n+28>a;a++){let e=i[a-1];(a%n===0||8===n&&a%n===4)&&(e=r[e>>>24]<<24^r[e>>16&255]<<16^r[e>>8&255]<<8^r[255&e],a%n===0&&(e=e<<8^e>>>24^c<<24,c=c<<1^283*(c>>7))),i[a]=i[a-n]^e}for(let e=0;a;e++,a--){const t=i[3&e?a:a-4];o[e]=4>=a||4>e?t:s[0][r[t>>>24]]^s[1][r[t>>16&255]]^s[2][r[t>>8&255]]^s[3][r[255&t]]}}encrypt(e){return this._crypt(e,0)}decrypt(e){return this._crypt(e,1)}_precompute(){const e=this._tables[0],t=this._tables[1],r=e[4],s=t[4],n=[],a=[];let i,o,c,l;for(let e=0;256>e;e++)a[(n[e]=e<<1^283*(e>>7))^e]=e;for(let d=i=0;!r[d];d^=o||1,i=a[i]||1){let a=i^i<<1^i<<2^i<<3^i<<4;a=a>>8^255&a^99,r[d]=a,s[a]=d,l=n[c=n[o=n[d]]];let u=16843009*l^65537*c^257*o^16843008*d,p=257*n[a]^16843008*a;for(let r=0;4>r;r++)e[r][d]=p=p<<24^p>>>8,t[r][a]=u=u<<24^u>>>8}for(let r=0;5>r;r++)e[r]=e[r].slice(0),t[r]=t[r].slice(0)}_crypt(e,t){if(4!==e.length)throw new p("invalid aes block size");const r=this._key[t],s=r.length/4-2,n=[0,0,0,0],a=this._tables[t],i=a[0],o=a[1],c=a[2],l=a[3],d=a[4];let u,f,h,w=e[0]^r[0],g=e[t?3:1]^r[1],m=e[2]^r[2],y=e[t?1:3]^r[3],b=4;for(let e=0;s>e;e++)u=i[w>>>24]^o[g>>16&255]^c[m>>8&255]^l[255&y]^r[b],f=i[g>>>24]^o[m>>16&255]^c[y>>8&255]^l[255&w]^r[b+1],h=i[m>>>24]^o[y>>16&255]^c[w>>8&255]^l[255&g]^r[b+2],y=i[y>>>24]^o[w>>16&255]^c[g>>8&255]^l[255&m]^r[b+3],b+=4,w=u,g=f,m=h;for(let e=0;4>e;e++)n[t?3&-e:e]=d[w>>>24]<<24^d[g>>16&255]<<16^d[m>>8&255]<<8^d[255&y]^r[b++],u=w,w=g,g=m,m=y,y=u;return n}},yt=class{constructor(e,t){this._prf=e,this._initIv=t,this._iv=t}reset(){this._iv=this._initIv}update(e){return this.calculate(this._prf,e,this._iv)}incWord(e){if(255&~(e>>24))e+=1<<24;else{let t=e>>16&255,r=e>>8&255,s=255&e;255===t?(t=0,255===r?(r=0,255===s?s=0:++s):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=s}return e}incCounter(e){0===(e[0]=this.incWord(e[0]))&&(e[1]=this.incWord(e[1]))}calculate(e,t,r){let s;if(!(s=t.length))return[];const n=Xe.bitLength(t);for(let n=0;s>n;n+=4){this.incCounter(r);const s=e.encrypt(r);t[n]^=s[0],t[n+1]^=s[1],t[n+2]^=s[2],t[n+3]^=s[3]}return Xe.clamp(t,n)}},bt=Qe.hmacSha1;let zt=ft&&wt&&typeof ht.importKey==ee,St=ft&&wt&&typeof ht.deriveBits==ee;class xt extends k{constructor({password:e,rawPassword:t,signed:s,encryptionStrength:n,checkPasswordOnly:a}){super({start(){r.assign(this,{ready:new y(e=>this.resolveReady=e),password:Et(e,t),signed:s,strength:n-1,pending:new f})},async transform(e,t){const r=this,{password:s,strength:n,resolveReady:i,ready:o}=r;s?(await(async(e,t,r,s)=>{const n=await Dt(e,t,r,At(s,0,lt[t])),a=At(s,lt[t]);if(n[0]!=a[0]||n[1]!=a[1])throw new p(et)})(r,n,s,At(e,0,lt[n]+2)),e=At(e,lt[n]+2),a?t.error(new p(rt)):i()):await o;const c=new f(e.length-ut-(e.length-ut)%nt);t.enqueue(kt(r,e,c,0,ut,!0))},async flush(e){const{signed:t,ctr:r,hmac:s,pending:n,ready:a}=this;if(s&&r){await a;const i=At(n,0,n.length-ut),o=At(n,n.length-ut);let c=new f;if(i.length){const e=Rt(gt,i);s.update(e);const t=r.update(e);c=Ut(gt,t)}if(t){const e=At(Ut(gt,s.digest()),0,ut);for(let t=0;ut>t;t++)if(e[t]!=o[t])throw new p(tt)}e.enqueue(c)}}})}}class Ft extends k{constructor({password:e,rawPassword:t,encryptionStrength:s}){let n;super({start(){r.assign(this,{ready:new y(e=>this.resolveReady=e),password:Et(e,t),strength:s-1,pending:new f})},async transform(e,t){const r=this,{password:s,strength:n,resolveReady:a,ready:i}=r;let o=new f;s?(o=await(async(e,t,r)=>{const s=st(new f(lt[t]));return vt(s,await Dt(e,t,r,s))})(r,n,s),a()):await i;const c=new f(o.length+e.length-e.length%nt);c.set(o,0),t.enqueue(kt(r,e,c,o.length,0))},async flush(e){const{ctr:t,hmac:r,pending:s,ready:a}=this;if(r&&t){await a;let i=new f;if(s.length){const e=t.update(Rt(gt,s));r.update(e),i=Ut(gt,e)}n.signature=Ut(gt,r.digest()).slice(0,ut),e.enqueue(vt(i,n.signature))}}}),n=this}}function kt(e,t,r,s,n,a){const{ctr:i,hmac:o,pending:c}=e,l=t.length-n;let d;for(c.length&&(t=vt(c,t),r=((e,t)=>{if(t&&t>e.length){const r=e;(e=new f(t)).set(r,0)}return e})(r,l-l%nt)),d=0;l-nt>=d;d+=nt){const e=Rt(gt,At(t,d,d+nt));a&&o.update(e);const n=i.update(e);a||o.update(n),r.set(Ut(gt,n),d+s)}return e.pending=At(t,d),r}async function Dt(e,s,n,a){e.password=null;const i=await(async(e,t,r,s,n)=>{if(!zt)return Qe.importKey(t);try{return await ht.importKey("raw",t,r,!1,n)}catch{return zt=!1,Qe.importKey(t)}})(0,n,it,0,ct),o=await(async(e,t,r)=>{if(!St)return Qe.pbkdf2(t,e.salt,ot.iterations,r);try{return await ht.deriveBits(e,t,r)}catch{return St=!1,Qe.pbkdf2(t,e.salt,ot.iterations,r)}})(r.assign({salt:a},ot),i,8*(2*dt[s]+2)),c=new f(o),l=Rt(gt,At(c,0,dt[s])),d=Rt(gt,At(c,dt[s],2*dt[s])),u=At(c,2*dt[s]);return r.assign(e,{keys:{key:l,authentication:d,passwordVerification:u},ctr:new yt(new mt(l),t.from(pt)),hmac:new bt(d)}),u}function Et(e,t){return t===Q?je(e):t}function vt(e,t){let r=e;return e.length+t.length&&(r=new f(e.length+t.length),r.set(e,0),r.set(t,e.length)),r}function At(e,t,r){return e.subarray(t,r)}function Ut(e,t){return e.fromBits(t)}function Rt(e,t){return e.toBits(t)}class Tt extends k{constructor({password:e,passwordVerification:t,checkPasswordOnly:s}){super({start(){r.assign(this,{password:e,passwordVerification:t}),_t(this,e)},transform(e,t){const r=this;if(r.password){const t=Mt(r,e.subarray(0,12));if(r.password=null,t.at(-1)!=r.passwordVerification)throw new p(et);e=e.subarray(12)}s?t.error(new p(rt)):t.enqueue(Mt(r,e))}})}}class Ct extends k{constructor({password:e,passwordVerification:t}){super({start(){r.assign(this,{password:e,passwordVerification:t}),_t(this,e)},transform(e,t){const r=this;let s,n;if(r.password){r.password=null;const t=st(new f(12));t[11]=r.passwordVerification,s=new f(e.length+t.length),s.set(Wt(r,t),0),n=12}else s=new f(e.length),n=0;s.set(Wt(r,e),n),t.enqueue(s)}})}}function Mt(e,t){const r=new f(t.length);for(let s=0;s<t.length;s++)r[s]=Nt(e)^t[s],Bt(e,r[s]);return r}function Wt(e,t){const r=new f(t.length);for(let s=0;s<t.length;s++)r[s]=Nt(e)^t[s],Bt(e,t[s]);return r}function _t(e,t){const s=[305419896,591751049,878082192];r.assign(e,{keys:s,crcKey0:new qe(s[0]),crcKey2:new qe(s[2])});for(let r=0;r<t.length;r++)Bt(e,t.charCodeAt(r))}function Bt(e,t){let[r,s,n]=e.keys;e.crcKey0.append([t]),r=~e.crcKey0.get(),s=Ot(i.imul(Ot(s+It(r)),134775813)+1),e.crcKey2.append([s>>>24]),n=~e.crcKey2.get(),e.keys=[r,s,n]}function Nt(e){const t=2|e.keys[2];return It(i.imul(t,1^t)>>>8)}function It(e){return 255&e}function Ot(e){return 4294967295&e}const Lt="Invalid uncompressed size";class Ht extends k{constructor(e,{chunkSize:t,CompressionStreamZlib:r,CompressionStream:s}){super({});const{compressed:n,encrypted:a,useCompressionStream:i,zipCrypto:o,signed:c,level:l}=e,d=this;let u,p,f=super.readable;a&&!o||!c||(u=new Ke,f=qt(f,u)),n&&(f=Vt(f,i,{level:l,chunkSize:t},s,r,s)),a&&(o?f=qt(f,new Ct(e)):(p=new Ft(e),f=qt(f,p))),Pt(d,f,()=>{let e;a&&!o&&(e=p.signature),a&&!o||!c||(e=new g(u.value.buffer).getUint32(0)),d.signature=e})}}class Zt extends k{constructor(e,{chunkSize:t,DecompressionStreamZlib:r,DecompressionStream:s}){super({});const{zipCrypto:n,encrypted:a,signed:i,signature:o,compressed:c,useCompressionStream:l,deflate64:d}=e;let u,f,h=super.readable;a&&(n?h=qt(h,new Tt(e)):(f=new xt(e),h=qt(h,f))),c&&(h=Vt(h,l,{chunkSize:t,deflate64:d},s,r,s)),a&&!n||!i||(u=new Ke,h=qt(h,u)),Pt(this,h,()=>{if((!a||n)&&i){const e=new g(u.value.buffer);if(o!=e.getUint32(0,!1))throw new p(tt)}})}}function Pt(e,t,s){t=qt(t,new k({flush:s})),r.defineProperty(e,"readable",{get:()=>t})}function Vt(e,t,r,s,n,a){const i=t&&s?s:n||a,o=r.deflate64?"deflate64-raw":"deflate-raw";try{e=qt(e,new i(o,r))}catch(s){if(!t)throw s;if(n)e=qt(e,new n(o,r));else{if(!a)throw s;e=qt(e,new a(o,r))}}return e}function qt(e,t){return e.pipeThrough(t)}const Kt="data",jt="close",Xt="deflate",Gt="inflate";class Yt extends k{constructor(e,t){super({});const s=this,{codecType:n}=e;let a;n.startsWith(Xt)?a=Ht:n.startsWith(Gt)&&(a=Zt),s.outputSize=0;let i=0;const o=new a(e,t),c=super.readable,l=new k({transform(e,t){e&&e.length&&(i+=e.length,t.enqueue(e))},flush(){r.assign(s,{inputSize:i})}}),d=new k({transform(t,r){if(t&&t.length&&(r.enqueue(t),s.outputSize+=t.length,e.outputSize!==Q&&s.outputSize>e.outputSize))throw new p(Lt)},flush(){const{signature:e}=o;r.assign(s,{signature:e,inputSize:i})}});r.defineProperty(s,"readable",{get:()=>c.pipeThrough(l).pipeThrough(o).pipeThrough(d)})}}class Jt extends k{constructor(e){let t;super({transform:function r(s,n){if(t){const e=new f(t.length+s.length);e.set(t),e.set(s,t.length),s=e,t=null}s.length>e?(n.enqueue(s.slice(0,e)),r(s.slice(e),n)):t=s},flush(e){t&&t.length&&e.enqueue(t)}})}}const Qt={type:"module"};let $t,er,tr,rr=!0;class sr{constructor(e,{readable:t,writable:s},{options:n,config:a,streamOptions:i,useWebWorkers:o,transferStreams:c,workerURI:l},d){const{signal:u}=i;return r.assign(e,{busy:!0,readable:t.pipeThrough(new Jt(a.chunkSize)).pipeThrough(new nr(i),{signal:u}),writable:s,options:r.assign({},n),workerURI:l,transferStreams:c,terminate:()=>new y(t=>{const{worker:r,busy:s}=e;r?(s?e.resolveTerminated=t:(r.terminate(),t()),e.interface=null):t()}),onTaskFinished(){const{resolveTerminated:t}=e;t&&(e.resolveTerminated=null,e.terminated=!0,e.worker.terminate(),t()),e.busy=!1,d(e)}}),$t===Q&&($t=typeof R!=$),(o&&$t?or:ir)(e,a)}}class nr extends k{constructor({onstart:e,onprogress:t,size:r,onend:s}){let n=0;super({async start(){e&&await ar(e,r)},async transform(e,s){n+=e.length,t&&await ar(t,n,r),s.enqueue(e)},async flush(){s&&await ar(s,n)}})}}async function ar(e,...t){try{await e(...t)}catch{}}function ir(e,t){return{run:()=>(async({options:e,readable:t,writable:r,onTaskFinished:s},n)=>{let a;try{if(!e.useCompressionStream)try{await void 0}catch{e.useCompressionStream=!0}a=new Yt(e,n),await t.pipeThrough(a).pipeTo(r,{preventClose:!0,preventAbort:!0});const{signature:s,inputSize:i,outputSize:o}=a;return{signature:s,inputSize:i,outputSize:o}}catch(e){throw a&&(e.outputSize=a.outputSize),e}finally{s()}})(e,t)}}function or(e,t){const{baseURI:s,chunkSize:n}=t;let{wasmURI:a}=t;if(!e.interface){let i;typeof a==ee&&(a=a());try{i=cr(e.workerURI,s,e)}catch{return $t=!1,ir(e,t)}r.assign(e,{worker:i,interface:{run:()=>(async(e,t)=>{let s,n;const a=new y((e,t)=>{s=e,n=t});r.assign(e,{reader:null,writer:null,resolveResult:s,rejectResult:n,result:a});const{readable:i,options:o}=e,{writable:c,closed:l}=(e=>{let t;const r=new y(e=>t=e);return{writable:new E({async write(t){const r=e.getWriter();await r.ready,await r.write(t),r.releaseLock()},close(){t()},abort:t=>e.getWriter().abort(t)}),closed:r}})(e.writable),d=lr({type:"start",options:o,config:t,readable:i,writable:c},e);d||r.assign(e,{reader:i.getReader(),writer:c.getWriter()});const u=await a;return d||await c.getWriter().close(),await l,u})(e,{chunkSize:n,wasmURI:a,baseURI:s})}})}return e.interface}function cr(e,t,s,n,a=!0){let i,o,c;if(er===Q){const r=typeof e==ee;o=r?e(a):e;const l=o.startsWith("data:"),d=o.startsWith("blob:");if(l||d){n===Q&&(n=!1),n&&(c=Qt);try{i=new R(o,c)}catch(a){if(d)try{u.revokeObjectURL(o)}catch{}if(r&&d)return cr(e,t,s,n,!1);if(n)throw a;return cr(e,t,s,!0,!1)}}else{n===Q&&(n=!0),n&&(c=Qt);try{o=new u(o,t)}catch{}try{i=new R(o,c)}catch(r){if(n)throw r;return cr(e,t,s,!1,a)}}er=o,tr=c}else i=new R(er,tr);return i.addEventListener("message",e=>(async({data:e},t)=>{const{type:s,value:n,messageId:a,result:i,error:o}=e,{reader:c,writer:l,resolveResult:d,rejectResult:u,onTaskFinished:h}=t;try{if(o){const{message:e,stack:t,code:s,name:n,outputSize:a}=o,i=new p(e);r.assign(i,{stack:t,code:s,name:n,outputSize:a}),w(i)}else{if("pull"==s){const{value:e,done:r}=await c.read();lr({type:Kt,value:e,done:r,messageId:a},t)}s==Kt&&(await l.ready,await l.write(new f(n)),lr({type:"ack",messageId:a},t)),s==jt&&w(null,i)}}catch(o){lr({type:jt,messageId:a},t),w(o)}function w(e,t){e?u(e):d(t),l&&l.releaseLock(),h()}})(e,s)),i}function lr(e,{worker:t,writer:r,onTaskFinished:s,transferStreams:n}){try{const{value:r,readable:s,writable:a}=e,i=[];if(r&&(e.value=r,i.push(e.value.buffer)),n&&rr?(s&&i.push(s),a&&i.push(a)):e.readable=e.writable=null,i.length)try{return t.postMessage(e,i),!0}catch{rr=!1,e.readable=e.writable=null,t.postMessage(e)}else t.postMessage(e)}catch(e){throw r&&r.releaseLock(),s(),e}}let dr=[];const ur=[];let pr=0;async function fr(e,t){const{options:r,config:s}=t,{transferStreams:a,useWebWorkers:i,useCompressionStream:o,compressed:c,signed:l,encrypted:d}=r,{workerURI:u,maxWorkers:p}=s;t.transferStreams=a||a===Q;const f=!(c||l||d||t.transferStreams);return t.useWebWorkers=!f&&(i||i===Q&&s.useWebWorkers),t.workerURI=t.useWebWorkers&&u?u:Q,r.useCompressionStream=o||o===Q&&s.useCompressionStream,(await(async()=>{const r=dr.find(e=>!e.busy);if(r)return hr(r),new sr(r,e,t,h);if(dr.length<p){const r={indexWorker:pr};return pr++,dr.push(r),new sr(r,e,t,h)}return new y(r=>ur.push({resolve:r,stream:e,workerOptions:t}))})()).run();function h(e){if(ur.length){const[{resolve:t,stream:r,workerOptions:s}]=ur.splice(0,1);t(new sr(e,r,s,h))}else e.worker?(hr(e),((e,t)=>{const{config:r}=t,{terminateWorkerTimeout:s}=r;n.isFinite(s)&&s>=0&&(e.terminated?e.terminated=!1:e.terminateTimeout=setTimeout(async()=>{dr=dr.filter(t=>t!=e);try{await e.terminate()}catch{}},s))})(e,t)):dr=dr.filter(t=>t!=e)}}function hr(e){const{terminateTimeout:t}=e;t&&(clearTimeout(t),e.terminateTimeout=null)}const wr="\0☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ".split("");function gr(e,t){return t&&"cp437"==t.trim().toLowerCase()?(e=>{{let t="";for(let r=0;r<e.length;r++)t+=wr[e[r]];return t}})(e):new z(t).decode(e)}const mr="filename",yr="rawFilename",br="comment",zr="rawComment",Sr="uncompressedSize",xr="compressedSize",Fr="offset",kr="diskNumberStart",Dr="lastModDate",Er="rawLastModDate",vr="lastAccessDate",Ar="creationDate",Ur="rawCreationDate",Rr="internalFileAttributes",Tr="externalFileAttributes",Cr="msdosAttributesRaw",Mr="msdosAttributes",Wr="msDosCompatible",_r="zip64",Br="encrypted",Nr="version",Ir="versionMadeBy",Or="zipCrypto",Lr="directory",Hr="executable",Zr="compressionMethod",Pr="signature",Vr="extraField",qr="unixMode",Kr="setuid",jr="setgid",Xr="sticky",Gr=[mr,yr,Sr,xr,Dr,Er,br,zr,vr,Ar,Ur,Fr,kr,Rr,Tr,Cr,Mr,Wr,_r,Br,Nr,Ir,Or,Lr,Hr,Zr,Pr,Vr,"extraFieldUnix","extraFieldInfoZip","uid","gid",qr,Kr,jr,Xr,"bitFlag","filenameUTF8","commentUTF8","rawExtraField","extraFieldZip64","extraFieldUnicodePath","extraFieldUnicodeComment","extraFieldAES","extraFieldNTFS","extraFieldExtendedTimestamp"];class Yr{constructor(e){Gr.forEach(t=>this[t]=e[t])}}const Jr="password",Qr="rawPassword",$r="passThrough",es="signal",ts="useWebWorkers",rs="useCompressionStream",ss="preventClose",ns="supportZip64SplitFile",as="offset",is="usdz",os="File format is not recognized",cs="Compression method not supported",ls="Split zip file",ds="utf-8",us="cp437",ps=[[Sr,T],[xr,T],[Fr,T],[kr,C]],fs={[C]:{getValue:Es,bytes:4},[T]:{getValue:vs,bytes:8}};class hs{constructor(e,t={}){r.assign(this,{reader:new Le(e),options:t,config:ne(),readRanges:[]})}async*getEntriesGenerator(e={}){const t=this;let{reader:s}=t;const{config:n}=t;if(await Ze(s),s.size!==Q&&s.readUint8Array||(s=new ye(await new d(s.readable).blob()),await Ze(s)),s.size<H)throw new p(os);s.chunkSize=ae(n);const a=await(async(e,t,r)=>{const s=new f(4);var n;return n=t,As(s).setUint32(0,n,!0),await a(22)||await a(i.min(1048582,r));async function a(t){const n=r-t,a=await Pe(e,n,t);for(let e=a.length-22;e>=0;e--)if(a[e]==s[0]&&a[e+1]==s[1]&&a[e+2]==s[2]&&a[e+3]==s[3])return{offset:n+e,buffer:a.slice(e,e+22).buffer}}})(s,I,s.size);if(!a)throw Es(As(await Pe(s,0,4)))==_?new p(ls):new p("End of central directory not found");const o=As(a);let c=Es(o,12),l=Es(o,16);const u=a.offset,h=Ds(o,20),w=u+H+h;let g=Ds(o,4);const m=s.lastDiskNumber||0;let b=Ds(o,6),z=Ds(o,8),S=0,x=0;if(l==T||c==T||z==C||b==C){const e=As(await Pe(s,a.offset-20,20));if(Es(e,0)==L){l=vs(e,8);let t=await Pe(s,l,56,-1),r=As(t);const n=a.offset-20-56;if(Es(r,0)!=O&&l!=n){const e=l;l=n,l>e&&(S=l-e),t=await Pe(s,l,56,-1),r=As(t)}if(Es(r,0)!=O)throw new p("End of Zip64 central directory locator not found");g==C&&(g=Es(r,16)),b==C&&(b=Es(r,20)),z==C&&(z=vs(r,32)),c==T&&(c=vs(r,40)),l-=c}}if(l<s.size||(S=s.size-l-c-H,l=s.size-c-H),m!=g)throw new p(ls);if(0>l)throw new p(os);let F=0,D=await Pe(s,l,c,b),E=As(D);if(c){const e=a.offset-c;if(Es(E,F)!=N&&l!=e){const t=l;l=e,l>t&&(S+=l-t),D=await Pe(s,l,c,b),E=As(D)}}const v=a.offset-l-(s.lastDiskOffset||0);if(c==v||0>v||(c=v,D=await Pe(s,l,c,b),E=As(D)),0>l||l>=s.size)throw new p(os);const A=Ss(t,e,"filenameEncoding"),U=Ss(t,e,"commentEncoding");for(let a=0;z>a;a++){const o=new ws(s,n,t.options);if(Es(E,F)!=N)throw new p("Central directory header not found");gs(o,E,F+6);const c=!!o.bitFlag.languageEncodingFlag,l=F+46,u=l+o.filenameLength,f=u+o.extraFieldLength,h=Ds(E,F+4),w=!(h>>8),g=h>>8==3,m=D.subarray(l,u),b=Ds(E,F+32),v=f+b,R=D.subarray(f,v),T=c,W=c,_=Es(E,F+38),B=_&M,I={readOnly:!!(1&B),hidden:!!(2&B),system:!!(4&B),directory:!!(16&B),archive:!!(32&B)},O=Es(E,F+42)+S,L=Ss(t,e,"decodeText")||gr,H=T?ds:A||us,Z=W?ds:U||us;let P=L(m,H);P===Q&&(P=gr(m,H));let G=L(R,Z);G===Q&&(G=gr(R,Z)),r.assign(o,{versionMadeBy:h,msDosCompatible:w,compressedSize:0,uncompressedSize:0,commentLength:b,offset:O,diskNumberStart:Ds(E,F+34),internalFileAttributes:Ds(E,F+36),externalFileAttributes:_,msdosAttributesRaw:B,msdosAttributes:I,rawFilename:m,filenameUTF8:T,commentUTF8:W,rawExtraField:D.subarray(u,f),rawComment:R,filename:P,comment:G}),x=i.max(O,x),ms(o,o,E,F+6);const Y=o.externalFileAttributes>>16&C;o.unixMode===Q&&16877&Y&&(o.unixMode=Y);const J=!!(o.unixMode&q),$=!!(o.unixMode&K),ee=!!(o.unixMode&j),te=o.unixMode!==Q?!!(73&o.unixMode):g&&!!(73&Y),re=o.unixMode!==Q&&(61440&o.unixMode)==V,se=(61440&Y)==V;r.assign(o,{setuid:J,setgid:$,sticky:ee,unixExternalUpper:Y,internalFileAttribute:o.internalFileAttributes,externalFileAttribute:o.externalFileAttributes,executable:te,directory:re||se||w&&I.directory||P.endsWith(X)&&!o.uncompressedSize,zipCrypto:o.encrypted&&!o.extraFieldAES});const ne=new Yr(o);ne.getData=(e,r)=>o.getData(e,ne,t.readRanges,r),ne.arrayBuffer=async e=>{const r=new k,[s]=await y.all([new d(r.readable).arrayBuffer(),o.getData(r,ne,t.readRanges,e)]);return s},F=v;const{onprogress:ae}=e;if(ae)try{await ae(a+1,z,new Yr(o))}catch{}yield ne}const R=Ss(t,e,"extractPrependedData"),W=Ss(t,e,"extractAppendedData");return R&&(t.prependedData=x>0?await Pe(s,0,x):new f),t.comment=h?await Pe(s,u+H,h):new f,W&&(t.appendedData=w<s.size?await Pe(s,w,s.size-w):new f),!0}async getEntries(e={}){const t=[];for await(const r of this.getEntriesGenerator(e))t.push(r);return t}async close(){}}let ws=class{constructor(e,t,s){r.assign(this,{reader:e,config:t,options:s})}async getData(e,t,s,n={}){const a=this,{reader:i,offset:o,diskNumberStart:c,extraFieldAES:l,extraFieldZip64:d,compressionMethod:u,config:h,bitFlag:w,signature:g,rawLastModDate:m,uncompressedSize:y,compressedSize:b}=a,{dataDescriptor:z}=w,S=t.localDirectory={},x=As(await Pe(i,o,G,c));let F=Ss(a,n,Jr),k=Ss(a,n,Qr);const D=Ss(a,n,$r);if(F=F&&F.length&&F,k=k&&k.length&&k,l&&99!=l.originalCompressionMethod)throw new p(cs);if(0!=u&&8!=u&&9!=u&&!D)throw new p(cs);if(Es(x,0)!=W)throw new p("Local file header not found");gs(S,x,4);const{extraFieldLength:v,filenameLength:A,lastAccessDate:U,creationDate:R}=S;S.rawExtraField=v?await Pe(i,o+G+A,v,c):new f,ms(a,S,x,4,!0),r.assign(t,{lastAccessDate:U,creationDate:R});const T=a.encrypted&&S.encrypted&&!D,C=T&&!l;if(D||(t.zipCrypto=C),T){if(!C&&l.strength===Q)throw new p("Encryption method not supported");if(!F&&!k)throw new p("File contains encrypted entry")}const _=o+G+A+v,N=b,I=i.readable;r.assign(I,{diskNumberStart:c,offset:_,size:N});const O=Ss(a,n,es),L=Ss(a,n,"checkPasswordOnly");let H=Ss(a,n,"checkOverlappingEntry");const Z=Ss(a,n,"checkOverlappingEntryOnly");Z&&(H=!0);const{onstart:P,onprogress:V,onend:q}=n,K=9==u;let j=Ss(a,n,rs);K&&(j=!1);const X={options:{codecType:Gt,password:F,rawPassword:k,zipCrypto:C,encryptionStrength:l&&l.strength,signed:Ss(a,n,"checkSignature")&&!D,passwordVerification:C&&(z?m>>>8&M:g>>>24&M),outputSize:D?b:y,signature:g,compressed:0!=u&&!D,encrypted:a.encrypted&&!D,useWebWorkers:Ss(a,n,ts),useCompressionStream:j,transferStreams:Ss(a,n,"transferStreams"),deflate64:K,checkPasswordOnly:L},config:h,streamOptions:{signal:O,size:N,onstart:P,onprogress:V,onend:q}};let Y;H&&await(async({reader:e,fileEntry:t,offset:r,diskNumberStart:s,signature:n,compressedSize:a,uncompressedSize:i,dataOffset:o,dataDescriptor:c,extraFieldZip64:l,readRanges:d})=>{let u=0;if(s)for(let t=0;s>t;t++)u+=e.readers[t].size;let f=0;if(c&&(f=l?20:12),f){const r=await Pe(e,o+a,f+4,s);if(Es(As(r),0)==B){const e=Es(As(r),4);let s,o;l?(s=vs(As(r),8),o=vs(As(r),16)):(s=Es(As(r),8),o=Es(As(r),12)),(t.encrypted&&!t.zipCrypto||e==n)&&s==a&&o==i&&(f+=4)}}const h={start:u+r,end:u+o+a+f,fileEntry:t};for(const e of d)if(e.fileEntry!=t&&h.start>=e.start&&h.start<e.end){const t=new p("Overlapping entry found");throw t.overlappingEntry=e.fileEntry,t}d.push(h)})({reader:i,fileEntry:t,offset:o,diskNumberStart:c,signature:g,compressedSize:b,uncompressedSize:y,dataOffset:_,dataDescriptor:z||S.bitFlag.dataDescriptor,extraFieldZip64:d||S.extraFieldZip64,readRanges:s});try{if(!Z){L&&(e=new E),e=new He(e),await Ze(e,D?b:y),({writable:Y}=e);const{outputSize:t}=await fr({readable:I,writable:Y},X);if(e.size+=t,t!=(D?b:y))throw new p(Lt)}}catch(t){if(t.outputSize!==Q&&(e.size+=t.outputSize),!L||t.message!=rt)throw t}finally{Ss(a,n,ss)||!Y||Y.locked||await Y.getWriter().close()}return L||Z?Q:e.getData?e.getData():Y}};function gs(e,t,s){const n=e.rawBitFlag=Ds(t,s+2),a=!(1&~n),i=Es(t,s+6);r.assign(e,{encrypted:a,version:Ds(t,s),bitFlag:{level:(6&n)>>1,dataDescriptor:!(8&~n),languageEncodingFlag:(n&P)==P},rawLastModDate:i,lastModDate:xs(i),filenameLength:Ds(t,s+22),extraFieldLength:Ds(t,s+24)})}function ms(e,t,s,n,a){const{rawExtraField:i}=t,l=t.extraField=new c,d=As(new f(i));let u=0;try{for(;u<i.length;){const e=Ds(d,u),t=Ds(d,u+2);l.set(e,{type:e,data:i.slice(u+4,u+4+t)}),u+=4+t}}catch{}const h=Ds(s,n+4);r.assign(t,{signature:Es(s,n+10),compressedSize:Es(s,n+14),uncompressedSize:Es(s,n+18)});const w=l.get(1);w&&(((e,t)=>{t.zip64=!0;const r=As(e.data),s=ps.filter(([e,r])=>t[e]==r);for(let n=0,a=0;n<s.length;n++){const[i,o]=s[n];if(t[i]==o){const s=fs[o];t[i]=e[i]=s.getValue(r,a),a+=s.bytes}else if(e[i])throw new p("Zip64 extra field not found")}})(w,t),t.extraFieldZip64=w);const g=l.get(28789);g&&(ys(g,mr,yr,t,e),t.extraFieldUnicodePath=g);const m=l.get(25461);m&&(ys(m,br,zr,t,e),t.extraFieldUnicodeComment=m);const y=l.get(39169);y?(((e,t,s)=>{const n=As(e.data),a=ks(n,4);r.assign(e,{vendorVersion:ks(n,0),vendorId:ks(n,2),strength:a,originalCompressionMethod:s,compressionMethod:Ds(n,5)}),t.compressionMethod=e.compressionMethod})(y,t,h),t.extraFieldAES=y):t.compressionMethod=h;const b=l.get(10);b&&(((e,t)=>{const s=As(e.data);let n,a=4;try{for(;a<e.data.length&&!n;){const t=Ds(s,a),r=Ds(s,a+2);1==t&&(n=e.data.slice(a+4,a+4+r)),a+=4+r}}catch{}try{if(n&&24==n.length){const s=As(n),a=s.getBigUint64(0,!0),i=s.getBigUint64(8,!0),o=s.getBigUint64(16,!0);r.assign(e,{rawLastModDate:a,rawLastAccessDate:i,rawCreationDate:o});const c={lastModDate:Fs(a),lastAccessDate:Fs(i),creationDate:Fs(o)};r.assign(e,c),r.assign(t,c)}}catch{}})(b,t),t.extraFieldNTFS=b);const z=l.get(30805);if(z)bs(z,t,!1),t.extraFieldUnix=z;else{const e=l.get(30837);e&&(bs(e,t,!0),t.extraFieldInfoZip=e)}const S=l.get(Z);S&&(((e,t,r)=>{const s=As(e.data),n=ks(s,0),a=[],i=[];r?(1&~n||(a.push(Dr),i.push(Er)),2&~n||(a.push(vr),i.push("rawLastAccessDate")),4&~n||(a.push(Ar),i.push(Ur))):5>e.data.length||(a.push(Dr),i.push(Er));let c=1;a.forEach((r,n)=>{if(e.data.length>=c+4){const a=Es(s,c);t[r]=e[r]=new o(1e3*a);const l=i[n];e[l]=a}c+=4})})(S,t,a),t.extraFieldExtendedTimestamp=S);const x=l.get(6534);x&&(t.extraFieldUSDZ=x)}function ys(e,t,s,n,a){const i=As(e.data),o=new qe;o.append(a[s]);const c=As(new f(4));c.setUint32(0,o.get(),!0);const l=Es(i,1);r.assign(e,{version:ks(i,0),[t]:gr(e.data.subarray(5)),valid:!a.bitFlag.languageEncodingFlag&&l==Es(c,0)}),e.valid&&(n[t]=e[t],n[t+"UTF8"]=!0)}function bs(e,t,s){try{const n=As(new f(e.data));let a=0;const i=ks(n,a++),o=ks(n,a++),c=e.data.subarray(a,a+o);a+=o;const l=zs(c),d=ks(n,a++),u=e.data.subarray(a,a+d);a+=d;const p=zs(u);let h=Q;if(!s&&a+2<=e.data.length){const t=e.data;h=new g(t.buffer,t.byteOffset+a,2).getUint16(0,!0)}r.assign(e,{version:i,uid:l,gid:p,unixMode:h}),l!==Q&&(t.uid=l),p!==Q&&(t.gid=p),h!==Q&&(t.unixMode=h)}catch{}}function zs(e){const t=new f(4);return t.set(e,0),new g(t.buffer,t.byteOffset,4).getUint32(0,!0)}function Ss(e,t,r){return t[r]===Q?e.options[r]:t[r]}function xs(e){const t=(4294901760&e)>>16,r=e&C;try{return new o(1980+((65024&t)>>9),((480&t)>>5)-1,31&t,(63488&r)>>11,(2016&r)>>5,2*(31&r),0)}catch{}}function Fs(e){return new o(n(e/a(1e4)-a(116444736e5)))}function ks(e,t){return e.getUint8(t)}function Ds(e,t){return e.getUint16(t,!0)}function Es(e,t){return e.getUint32(t,!0)}function vs(e,t){return n(e.getBigUint64(t,!0))}function As(e){return new g(e.buffer)}const Us="Version exceeds 65535",Rs="Zip64 is not supported (make sure 'keepOrder' is set to 'true')",Ts=new f([7,0,2,0,65,69,3,0,0]),Cs="infozip",Ms="unix";let Ws=0;const _s=[];class Bs{constructor(e,t={}){const s=(e=new He(e)).availableSize!==Q&&e.availableSize>0&&e.availableSize!==1/0&&e.maxSize!==Q&&e.maxSize>0&&e.maxSize!==1/0;r.assign(this,{writer:e,addSplitZipSignature:s,options:t,config:ne(),files:new c,filenames:new l,offset:t[as]===Q?e.size||e.writable.size||0:t[as],pendingEntriesSize:0,pendingAddFileCalls:new l,bufferedWrites:0})}async prependZip(e){if(this.filenames.size)throw new p("Zip file not empty");e=new Le(e);const t=new hs(e.readable),s=await t.getEntries();await t.close(),await e.readable.pipeTo(this.writer.writable,{preventClose:!0,preventAbort:!0}),this.writer.size=this.offset=e.size,this.filenames=new l(s.map(e=>e.filename)),this.files=new c(s.map(e=>{const{version:t,compressionMethod:s,lastModDate:n,lastAccessDate:a,creationDate:i,rawFilename:o,bitFlag:c,encrypted:l,uncompressedSize:d,compressedSize:u,diskOffset:p,diskNumber:h,zip64:w}=e;let{rawExtraFieldZip64:g,rawExtraFieldAES:m,rawExtraFieldExtendedTimestamp:y,rawExtraFieldNTFS:b,rawExtraFieldUnix:z,rawExtraField:S}=e;const{level:x,languageEncodingFlag:F,dataDescriptor:k}=c;g=g||new f,m=m||new f,y=y||new f,b=b||new f,z=e.rawExtraFieldUnix||new f,S=S||new f;const D=Gs(g,m,y,b,z,S),E=w&&d>T,v=w&&u>T,{headerArray:A,headerView:U}=Ys({version:t,bitFlag:Js(x,F,k,l,s),compressionMethod:s,uncompressedSize:d,compressedSize:u,lastModDate:n,rawFilename:o,zip64CompressedSize:v,zip64UncompressedSize:E,extraFieldLength:D});return r.assign(e,{zip64UncompressedSize:E,zip64CompressedSize:v,zip64Offset:w&&this.offset-p>T,zip64DiskNumberStart:w&&h>C,rawExtraFieldZip64:g,rawExtraFieldAES:m,rawExtraFieldExtendedTimestamp:y,rawExtraFieldNTFS:b,rawExtraFieldUnix:z,rawExtraField:S,extendedTimestamp:y.length>0||b.length>0,extraFieldExtendedTimestampFlag:1+(a?2:0)+(i?4:0),headerArray:A,headerView:U}),[e.filename,e]}))}async add(e="",s,n={}){const c=this,{pendingAddFileCalls:l,config:d}=c;let u;Ws<d.maxWorkers?Ws++:await new y(e=>_s.push(e));try{if(e=e.trim(),c.filenames.has(e))throw new p("File already exists");return c.filenames.add(e),u=(async(e,s,n,c)=>{s=s.trim();let l=Hs(e,c,Wr),d=Hs(e,c,Ir,l?20:768);const u=Hs(e,c,Hr),w=Hs(e,c,"uid"),m=Hs(e,c,"gid");let b=Hs(e,c,qr);const z=Hs(e,c,"unixExtraFieldType");let S=Hs(e,c,Kr),x=Hs(e,c,jr),F=Hs(e,c,Xr);if(w!==Q&&(0>w||w>T))throw new p("Invalid uid (must be integer 0..2^32-1)");if(m!==Q&&(0>m||m>T))throw new p("Invalid gid (must be integer 0..2^32-1)");if(b!==Q&&(0>b||b>C))throw new p("Invalid UNIX mode (must be integer 0..65535)");if(z!==Q&&z!==Cs&&z!==Ms)throw new p("Invalid unixExtraFieldType (must be 'infozip' or 'unix')");let D=Hs(e,c,Cr),E=Hs(e,c,Mr);const v=D!==Q||E!==Q;if(w!==Q||m!==Q||b!==Q||z?(l=!1,d=d&C|768):v&&(l=!0,d&=M),D!==Q&&(0>D||D>M))throw new p("Invalid msdosAttributesRaw (must be integer 0..255)");if(E&&"object"!=typeof E)throw new p("Invalid msdosAttributes (must be an object with boolean flags)");if(d>C)throw new p(Us);let A=Hs(e,c,Tr,0);!c[Lr]&&s.endsWith(X)&&(c[Lr]=!0);const U=Hs(e,c,Lr);let R;U?(s.endsWith(X)||(s+=X),0===A&&(A=16,l||(A|=16877<<16))):l||0!==A||(A=u?493<<16:27525120),l||(R=A>>16&C,b=b===Q?R:b&C,S?b|=q:S=!!(b&q),x?b|=K:x=!!(b&K),F?b|=j:F=!!(b&j),U&&(b|=V),A=(b&C)<<16|A&M),({msdosAttributesRaw:D,msdosAttributes:E}=((e,t)=>{if(e!==Q)e&=M;else if(t!==Q){const{readOnly:r,hidden:s,system:n,directory:a,archive:i}=t;let o=0;r&&(o|=1),s&&(o|=2),n&&(o|=4),a&&(o|=16),i&&(o|=32),e=o&M}return t===Q&&(t={readOnly:!!(1&e),hidden:!!(2&e),system:!!(4&e),directory:!!(16&e),archive:!!(32&e)}),{msdosAttributesRaw:e,msdosAttributes:t}})(D,E)),v&&(A=A&T|D&M);const N=Hs(e,c,"encodeText",je);let I=N(s);if(I===Q&&(I=je(s)),Gs(I)>C)throw new p("File entry name exceeds 64KB");const O=c[br]||"";let L=N(O);if(L===Q&&(L=je(O)),Gs(L)>C)throw new p("File entry comment exceeds 64KB");const H=Hs(e,c,Nr,20);if(H>C)throw new p(Us);const P=Hs(e,c,Dr,new o),$=Hs(e,c,vr),ee=Hs(e,c,Ar),te=Hs(e,c,Rr,0),re=Hs(e,c,$r);let se,ne;re||(se=Hs(e,c,Jr),ne=Hs(e,c,Qr));const ie=Hs(e,c,"encryptionStrength",3),oe=Hs(e,c,Or),ce=Hs(e,c,"extendedTimestamp",!0),le=Hs(e,c,"keepOrder",!0),de=Hs(e,c,ts),ue=Hs(e,c,"bufferedWrite"),pe=Hs(e,c,"dataDescriptorSignature",!1),fe=Hs(e,c,es),he=Hs(e,c,"useUnicodeFileNames",!0),we=Hs(e,c,Zr);let ge=Hs(e,c,"level"),me=Hs(e,c,rs),ye=Hs(e,c,"dataDescriptor");ue&&ye===Q&&(ye=!1),(ye===Q||oe)&&(ye=!0),ge!==Q&&6!=ge&&(me=!1),me||e.config.CompressionStream!==Q||e.config.CompressionStreamZlib!==Q||(ge=0);let be=Hs(e,c,_r);if(!oe&&(se!==Q||ne!==Q)&&(1>ie||ie>3))throw new p("The strength must equal 1, 2, or 3");let ze=new f;const Se=c[Vr];if(Se){let e=0,t=0;Se.forEach(t=>e+=4+Gs(t)),ze=new f(e),Se.forEach((e,r)=>{if(r>C)throw new p("Extra field type exceeds 65535");if(Gs(e)>C)throw new p("Extra field data exceeds 64KB");js(ze,new h([r]),t),js(ze,new h([Gs(e)]),t+2),js(ze,e,t+4),t+=4+Gs(e)})}let xe=0,Fe=0,ke=0;if(re&&(ke=c[Sr],ke===Q))throw new p("Undefined uncompressed size");const De=!0===be;n&&(n=new Le(n),await Ze(n),re?(c.uncompressedSize=ke,xe=Zs(ke)):n.size===Q?(ye=!0,(be||be===Q)&&(be=!0,ke=xe=4294967296)):(c.uncompressedSize=ke=n.size,xe=Zs(ke)));const{diskOffset:Ee,diskNumber:ve,maxSize:Ae}=e.writer,Ue=De||ke>T,Re=De||xe>T,Te=De||e.offset+e.pendingEntriesSize-Ee>T,Ce=Hs(e,c,ns,!0)&&De||ve+i.ceil(e.pendingEntriesSize/Ae)>C;if(Te||Ue||Re||Ce){if(!1===be||!le)throw new p(Rs);be=!0}be=be||!1;const Me=Hs(e,c,Br),We=(e=>{const{rawFilename:t,lastModDate:r,lastAccessDate:s,creationDate:n,level:o,zip64:c,zipCrypto:l,useUnicodeFileNames:d,dataDescriptor:u,directory:p,rawExtraField:h,encryptionStrength:w,extendedTimestamp:m,passThrough:y,encrypted:b,zip64UncompressedSize:z,zip64CompressedSize:S,zip64Offset:x,zip64DiskNumberStart:F,uncompressedSize:k,offset:D,diskNumberStart:E}=e;let{version:v,compressionMethod:A}=e;const U=!p&&(o>0||o===Q&&0!==A);let R,T;const M=y||!U,_=c&&(e.bufferedWrite||!z&&!S||M);if(c){let e=4,t=4;z&&(e+=8,t+=8),S&&(e+=8,t+=8),x&&(e+=8),F&&(e+=4),R=new f(e);const r=Xs(R);T=new f(t);const s=Xs(T);if(Vs(r,0,1),Vs(r,2,Gs(R)-4),Vs(s,0,1),Vs(s,2,Gs(T)-4),_){const e=Xs(R),t=Xs(T);let r=4,s=4;z&&(Ks(e,r,a(k)),r+=8,Ks(t,s,a(k)),s+=8),S&&M&&(Ks(e,r,a(k)),r+=8,Ks(t,s,a(k)),s+=8),x&&(Ks(e,r,a(D)),r+=8),F&&(qs(e,r,E),r+=4),4==s&&(T=new f)}}else R=new f,T=new f;let B,N,I,O,L;if(b&&!l){B=new f(Gs(Ts)+2);const e=Xs(B);Vs(e,0,39169),js(B,Ts,2),Ps(e,8,w)}else B=new f;if(m){I=new f(9+(s?4:0)+(n?4:0));const e=Xs(I);Vs(e,0,Z),Vs(e,2,Gs(I)-4),O=1+(s?2:0)+(n?4:0),Ps(e,4,O);let t=5;qs(e,t,i.floor(r.getTime()/1e3)),t+=4,s&&(qs(e,t,i.floor(s.getTime()/1e3)),t+=4),n&&qs(e,t,i.floor(n.getTime()/1e3));try{N=new f(36);const e=Xs(N),t=Ls(r);Vs(e,0,10),Vs(e,2,32),Vs(e,8,1),Vs(e,10,24),Ks(e,12,t),Ks(e,20,Ls(s)||t),Ks(e,28,Ls(n)||t)}catch{N=new f}}else N=I=new f;try{const{uid:t,gid:r,unixMode:s,setuid:n,setgid:a,sticky:i,unixExtraFieldType:o}=e;if(!o||t===Q&&r===Q&&s===Q)L=new f;else{const e=Ns(t),c=Ns(r);let l=new f;if(o==Ms&&s!==Q){let e=s&C;n&&(e|=q),a&&(e|=K),i&&(e|=j),l=new f(2),new g(l.buffer).setUint16(0,e,!0)}const d=3+e.length+c.length+l.length;L=new f(4+d);const u=Xs(L);Vs(u,0,o==Cs?30837:30805),Vs(u,2,d),Ps(u,4,1),Ps(u,5,e.length);let p=6;js(L,e,p),p+=e.length,Ps(u,p,c.length),p++,js(L,c,p),p+=c.length,js(L,l,p)}}catch{L=new f}A===Q&&(A=U?8:0),c&&(v=v>45?v:45),b&&!l&&(v=v>51?v:51,B[9]=A,A=99);const H=_?Gs(T):0,P=H+Gs(B,I,N,L,h),{headerArray:V,headerView:X,rawLastModDate:$}=Ys({version:v,bitFlag:Js(o,d,u,b,A),compressionMethod:A,uncompressedSize:k,lastModDate:J>r?J:r>Y?Y:r,rawFilename:t,zip64CompressedSize:S,zip64UncompressedSize:z,extraFieldLength:P});let ee=G;const te=new f(ee+Gs(t)+P),re=Xs(te);return qs(re,0,W),js(te,V,4),js(te,t,ee),ee+=Gs(t),_&&js(te,T,ee),ee+=H,js(te,B,ee),ee+=Gs(B),js(te,I,ee),ee+=Gs(I),js(te,N,ee),ee+=Gs(N),js(te,L,ee),ee+=Gs(L),js(te,h,ee),u&&(qs(re,18,0),qs(re,22,0)),{localHeaderArray:te,localHeaderView:re,headerArray:V,headerView:X,lastModDate:r,rawLastModDate:$,encrypted:b,compressed:U,version:v,compressionMethod:A,extraFieldExtendedTimestampFlag:O,rawExtraFieldZip64:R,localExtraFieldZip64Length:H,rawExtraFieldExtendedTimestamp:I,rawExtraFieldNTFS:N,rawExtraFieldUnix:L,rawExtraFieldAES:B,extraFieldLength:P}})(c=r.assign({},c,{rawFilename:I,rawComment:L,version:H,versionMadeBy:d,lastModDate:P,lastAccessDate:$,creationDate:ee,rawExtraField:ze,zip64:be,zip64UncompressedSize:Ue,zip64CompressedSize:Re,zip64Offset:Te,zip64DiskNumberStart:Ce,password:se,rawPassword:ne,level:ge,useWebWorkers:de,encryptionStrength:ie,extendedTimestamp:ce,zipCrypto:oe,bufferedWrite:ue,keepOrder:le,useUnicodeFileNames:he,dataDescriptor:ye,dataDescriptorSignature:pe,signal:fe,msDosCompatible:l,internalFileAttribute:te,internalFileAttributes:te,externalFileAttribute:A,externalFileAttributes:A,useCompressionStream:me,passThrough:re,encrypted:!!(se&&Gs(se)||ne&&Gs(ne))||re&&Me,signature:c[Pr],compressionMethod:we,uncompressedSize:ke,offset:e.offset-Ee,diskNumberStart:ve,uid:w,gid:m,setuid:S,setgid:x,sticky:F,unixMode:b,msdosAttributesRaw:D,msdosAttributes:E,unixExternalUpper:R})),_e=(({zip64:e,dataDescriptor:t,dataDescriptorSignature:r})=>{let s,n=new f,a=0,i=e?20:12;return r&&(i+=4),t&&(n=new f(i),s=Xs(n),r&&(a=4,qs(s,0,B))),{dataDescriptorArray:n,dataDescriptorView:s,dataDescriptorOffset:a}})(c),Be=Gs(We.localHeaderArray,_e.dataDescriptorArray);let Ne;Fe=Be+xe,e.options[is]&&(Fe+=Fe+64),e.pendingEntriesSize+=Fe;try{Ne=await(async(e,s,n,i,o)=>{const{files:c,writer:l}=e,{keepOrder:d,dataDescriptor:u,signal:h}=o,{headerInfo:w}=i,g=e.options[is],m=t.from(c.values()).pop();let b,z,S,x,F,D,E={};c.set(s,E);try{let t;d&&(t=m&&m.lock,E.lock=new y(e=>S=e)),!(o.bufferedWrite||e.writerLocked||e.bufferedWrites&&d)&&u||g?(D=l,await v()):(D=new k(void 0,void 0,{highWaterMark:1/0}),D.size=0,b=!0,e.bufferedWrites++,await Ze(l)),await Ze(D);const{writable:z,diskOffset:U}=l;if(e.addSplitZipSignature){delete e.addSplitZipSignature;const t=new f(4);qs(Xs(t),0,_),await Os(l,t),e.offset+=4}g&&((e,t)=>{const{headerInfo:r}=e;let{localHeaderArray:s,extraFieldLength:n}=r,a=Xs(s),i=64-(t+Gs(s))%64;4>i&&(i+=64);const o=new f(i),c=Xs(o);Vs(c,0,6534),Vs(c,2,i-2);const l=s;r.localHeaderArray=s=new f(Gs(l)+i),js(s,l),js(s,o,Gs(l)),a=Xs(s),Vs(a,28,n+i),e.metadataSize+=i})(i,e.offset-U);const{localHeaderView:R,localHeaderArray:C}=w;b||(await t,await A(z));const{diskNumber:W}=l;E.diskNumberStart=W,b||(F=!0,await Os(D,C)),E=await(async(e,t,{diskNumberStart:s,lock:n},i,o,c)=>{const{headerInfo:l,dataDescriptorInfo:d,metadataSize:u}=i,{headerArray:p,headerView:f,lastModDate:h,rawLastModDate:w,encrypted:g,compressed:m,version:y,compressionMethod:b,rawExtraFieldZip64:z,localExtraFieldZip64Length:S,rawExtraFieldExtendedTimestamp:x,extraFieldExtendedTimestampFlag:F,rawExtraFieldNTFS:k,rawExtraFieldUnix:D,rawExtraFieldAES:E}=l,{dataDescriptorArray:v}=d,{rawFilename:A,lastAccessDate:U,creationDate:R,password:T,rawPassword:C,level:W,zip64:_,zip64UncompressedSize:B,zip64CompressedSize:N,zip64Offset:I,zip64DiskNumberStart:O,zipCrypto:L,dataDescriptor:H,directory:Z,executable:P,versionMadeBy:V,rawComment:q,rawExtraField:K,useWebWorkers:j,onstart:X,onprogress:G,onend:Y,signal:J,encryptionStrength:$,extendedTimestamp:ee,msDosCompatible:te,internalFileAttributes:re,externalFileAttributes:se,uid:ne,gid:ie,unixMode:oe,setuid:ce,setgid:le,sticky:de,unixExternalUpper:ue,msdosAttributesRaw:pe,msdosAttributes:fe,useCompressionStream:he,passThrough:we}=c,ge={lock:n,versionMadeBy:V,zip64:_,directory:!!Z,executable:!!P,filenameUTF8:!0,rawFilename:A,commentUTF8:!0,rawComment:q,rawExtraFieldZip64:z,localExtraFieldZip64Length:S,rawExtraFieldExtendedTimestamp:x,rawExtraFieldNTFS:k,rawExtraFieldUnix:D,rawExtraFieldAES:E,rawExtraField:K,extendedTimestamp:ee,msDosCompatible:te,internalFileAttributes:re,externalFileAttributes:se,diskNumberStart:s,uid:ne,gid:ie,unixMode:oe,setuid:ce,setgid:le,sticky:de,unixExternalUpper:ue,msdosAttributesRaw:pe,msdosAttributes:fe};let{signature:me,uncompressedSize:ye}=c,be=0;we||(ye=0);const{writable:ze}=t;if(e){e.chunkSize=ae(o);const r=e.readable,s=e.size,n={options:{codecType:Xt,level:W,rawPassword:C,password:T,encryptionStrength:$,zipCrypto:g&&L,passwordVerification:g&&L&&w>>8&M,signed:!we,compressed:m&&!we,encrypted:g&&!we,useWebWorkers:j,useCompressionStream:he,transferStreams:!1},config:o,streamOptions:{signal:J,size:s,onstart:X,onprogress:G,onend:Y}};try{const e=await fr({readable:r,writable:ze},n);be=e.outputSize,t.size+=be,we||(ye=e.inputSize,me=e.signature)}catch(e){throw e.outputSize!==Q&&(t.size+=e.outputSize),e}}return(({signature:e,compressedSize:t,uncompressedSize:r,headerInfo:s,dataDescriptorInfo:n},{zip64:i,zipCrypto:o,dataDescriptor:c})=>{const{headerView:l,encrypted:d}=s,{dataDescriptorView:u,dataDescriptorOffset:p}=n;d&&!o||e===Q||(qs(l,10,e),c&&qs(u,p,e)),i?c&&(Ks(u,p+4,a(t)),Ks(u,p+12,a(r))):(qs(l,14,t),qs(l,18,r),c&&(qs(u,p+4,t),qs(u,p+8,r)))})({signature:me,compressedSize:be,uncompressedSize:ye,headerInfo:l,dataDescriptorInfo:d},c),H&&await Os(t,v),r.assign(ge,{uncompressedSize:ye,compressedSize:be,lastModDate:h,rawLastModDate:w,creationDate:R,lastAccessDate:U,encrypted:g,zipCrypto:L,size:u+be,compressionMethod:b,version:y,headerArray:p,headerView:f,signature:me,extraFieldExtendedTimestampFlag:F,zip64UncompressedSize:B,zip64CompressedSize:N,zip64Offset:I,zip64DiskNumberStart:O}),ge})(n,D,E,i,e.config,o);const{zip64:B}=E;if(b||(F=!1),c.set(s,E),E.filename=s,b?(await y.all([D.writable.getWriter().close(),t]),await v(),x=!0,E.diskNumberStart=l.diskNumber,E.offset=e.offset-l.diskOffset,B&&Is(E),(({rawFilename:e,encrypted:t,zip64:r,localExtraFieldZip64Length:s,signature:n,compressedSize:i,uncompressedSize:o,zip64UncompressedSize:c,zip64CompressedSize:l},d,{dataDescriptor:u})=>{if(u||(t||qs(d,14,n),l||qs(d,18,i),c||qs(d,22,o)),r&&s){let t=G+Gs(e)+4;c&&(Ks(d,t,a(o)),t+=8),l&&(Ks(d,t,a(i)),t+=8)}})(E,R,o),await A(z),await Os(l,C),await D.readable.pipeTo(z,{preventClose:!0,preventAbort:!0,signal:h}),l.size+=D.size,x=!1):(E.offset=e.offset-U,B&&Is(E)),E.offset>T&&!B)throw new p(Rs);return e.offset+=E.size,E}catch(t){if(x||F){if(e.hasCorruptedEntries=!0,t)try{t.corruptedEntry=!0}catch{}b?e.offset+=D.size:e.offset=D.size}throw c.delete(s),t}finally{b&&e.bufferedWrites--,S&&S(),z&&z()}async function v(){e.writerLocked=!0;const{lockWriter:t}=e;e.lockWriter=new y(t=>z=()=>{e.writerLocked=!1,t()}),await t}async function A(e){Gs(w.localHeaderArray)>l.availableSize&&(l.availableSize=0,await Os(e,new f))}})(e,s,n,{headerInfo:We,dataDescriptorInfo:_e,metadataSize:Be},c)}finally{e.pendingEntriesSize-=Fe}return r.assign(Ne,{name:s,comment:O,extraField:Se}),new Yr(Ne)})(c,e,s,n),l.add(u),await u}catch(t){throw c.filenames.delete(e),t}finally{l.delete(u);const e=_s.shift();e?e():Ws--}}remove(e){const{filenames:t,files:r}=this;if("string"==typeof e&&(e=r.get(e)),e&&e.filename!==Q){const{filename:s}=e;if(t.has(s)&&r.has(s))return t.delete(s),r.delete(s),!0}return!1}async close(e=new f,r={}){const{pendingAddFileCalls:s,writer:n}=this,{writable:o}=n;for(;s.size;)await y.allSettled(t.from(s));return await(async(e,r,s)=>{const{files:n,writer:o}=e,{diskOffset:c}=o;let{diskNumber:l}=o,d=0,u=0,h=e.offset-c,w=n.size;for(const[,e]of n){const{rawFilename:t,rawExtraFieldZip64:r,rawExtraFieldAES:s,rawComment:n,rawExtraFieldNTFS:a,rawExtraFieldUnix:o,rawExtraField:c,extendedTimestamp:l,extraFieldExtendedTimestampFlag:d,lastModDate:p}=e;let h;if(l){h=new f(9);const e=Xs(h);Vs(e,0,Z),Vs(e,2,5),Ps(e,4,d),qs(e,5,i.floor(p.getTime()/1e3))}else h=new f;e.rawExtraFieldExtendedTimestamp=h,u+=46+Gs(t,n,r,s,a,o,h,c)}const g=new f(u),m=Xs(g);await Ze(o);let y=0;for(const[e,r]of t.from(n.values()).entries()){const{offset:t,rawFilename:a,rawExtraFieldZip64:i,rawExtraFieldAES:c,rawExtraFieldExtendedTimestamp:l,rawExtraFieldNTFS:u,rawExtraFieldUnix:p,rawExtraField:f,rawComment:h,versionMadeBy:w,headerArray:b,headerView:z,zip64:S,zip64UncompressedSize:x,zip64CompressedSize:F,zip64DiskNumberStart:k,zip64Offset:D,internalFileAttributes:E,externalFileAttributes:v,diskNumberStart:A,uncompressedSize:U,compressedSize:R}=r,M=Gs(i,c,l,u,p,f);qs(m,d,N),Vs(m,d+4,w),x||qs(z,18,U),F||qs(z,14,R),js(g,b,d+6);let W=d+G;if(Vs(m,W,M),W+=2,Vs(m,W,Gs(h)),W+=2,Vs(m,W,S&&k?C:A),W+=2,Vs(m,W,E),W+=2,v&&qs(m,W,v),W+=4,qs(m,W,S&&D?T:t),W+=4,js(g,a,W),W+=Gs(a),js(g,i,W),W+=Gs(i),js(g,c,W),W+=Gs(c),js(g,l,W),W+=Gs(l),js(g,u,W),W+=Gs(u),js(g,p,W),W+=Gs(p),js(g,f,W),W+=Gs(f),js(g,h,W),W+=Gs(h),d-y>o.availableSize&&(o.availableSize=0,await Os(o,g.slice(y,d)),y=d),d=W,s.onprogress)try{await s.onprogress(e+1,n.size,new Yr(r))}catch{}}await Os(o,y?g.slice(y):g);let b=o.diskNumber;const{availableSize:z}=o;H>z&&b++;let S=Hs(e,s,_r);if(h>T||u>T||w>C||b>C){if(!1===S)throw new p(Rs);S=!0}const x=new f(S?98:H),F=Xs(x);d=0,S&&(qs(F,0,O),Ks(F,4,a(44)),Vs(F,12,45),Vs(F,14,45),qs(F,16,b),qs(F,20,l),Ks(F,24,a(w)),Ks(F,32,a(w)),Ks(F,40,a(u)),Ks(F,48,a(h)),qs(F,56,L),Ks(F,64,a(h)+a(u)),qs(F,72,b+1),Hs(e,s,ns,!0)&&(b=C,l=C),w=C,h=T,u=T,d+=76),qs(F,d,I),Vs(F,d+4,b),Vs(F,d+6,l),Vs(F,d+8,w),Vs(F,d+10,w),qs(F,d+12,u),qs(F,d+16,h);const k=Gs(r);if(k){if(k>C)throw new p("Zip file comment exceeds 64KB");Vs(F,d+20,k)}await Os(o,x),k&&await Os(o,r)})(this,e,r),Hs(this,r,ss)||await o.getWriter().close(),n.getData?n.getData():o}}function Ns(e){if(e===Q)return new f;{const t=new f(4);Xs(t).setUint32(0,e,!0);let r=4;for(;r>1&&0===t[r-1];)r--;return t.subarray(0,r)}}function Is({compressedSize:e,uncompressedSize:t,offset:r,diskNumberStart:s,zip64UncompressedSize:n,zip64CompressedSize:i,zip64Offset:o,zip64DiskNumberStart:c,rawExtraFieldZip64:l}){const d=Xs(l);let u=4;n&&(Ks(d,u,a(t)),u+=8),i&&(Ks(d,u,a(e)),u+=8),o&&(Ks(d,u,a(r)),u+=8),c&&qs(d,u,s)}async function Os(e,t){const{writable:r}=e,s=r.getWriter();try{await s.ready,e.size+=Gs(t),await s.write(t)}finally{s.releaseLock()}}function Ls(e){if(e)return(a(e.getTime())+a(116444736e5))*a(1e4)}function Hs(e,t,r,s){const n=t[r]===Q?e.options[r]:t[r];return n===Q?s:n}function Zs(e){return e+5*(i.floor(e/16383)+1)}function Ps(e,t,r){e.setUint8(t,r)}function Vs(e,t,r){e.setUint16(t,r,!0)}function qs(e,t,r){e.setUint32(t,r,!0)}function Ks(e,t,r){e.setBigUint64(t,r,!0)}function js(e,t,r){e.set(t,r)}function Xs(e){return new g(e.buffer)}function Gs(...e){let t=0;return e.forEach(e=>e&&(t+=e.length)),t}function Ys({version:e,bitFlag:t,compressionMethod:r,uncompressedSize:s,compressedSize:n,lastModDate:a,rawFilename:i,zip64CompressedSize:o,zip64UncompressedSize:c,extraFieldLength:l}){const d=new f(26),u=Xs(d);Vs(u,0,e),Vs(u,2,t),Vs(u,4,r);const p=new w(1),h=Xs(p);Vs(h,0,(a.getHours()<<6|a.getMinutes())<<5|a.getSeconds()/2),Vs(h,2,(a.getFullYear()-1980<<4|a.getMonth()+1)<<5|a.getDate());const g=p[0];return qs(u,6,g),(o||n!==Q)&&qs(u,14,o?T:n),(c||s!==Q)&&qs(u,18,c?T:s),Vs(u,22,Gs(i)),Vs(u,24,l),{headerArray:d,headerView:u,rawLastModDate:g}}function Js(e,t,r,s,n){let a=0;return t&&(a|=P),r&&(a|=8),8!=n&&9!=n||(0>e||e>3||(a|=6),e>3&&5>=e&&(a|=4),9==e&&(a|=2)),s&&(a|=1),a}class Qs{constructor(e,t,s,n){const a=this;if(e.root&&n&&n.getChildByName(t))throw new p("Entry filename already exists");s||(s={}),r.assign(a,{fs:e,name:t,data:s.data,options:s.options,id:e.entries.length,parent:n,children:[],uncompressedSize:s.uncompressedSize||0,passThrough:s.passThrough}),e.entries.push(a),n&&a.parent.children.push(a)}moveTo(e){this.fs.move(this,e)}getFullname(){return this.getRelativeName()}getRelativeName(e=this.fs.root){let t=this.name,r=this.parent;for(;r&&r!=e;)t=(r.name?r.name+"/":"")+t,r=r.parent;return t}isDescendantOf(e){let t=this.parent;for(;t&&t.id!=e.id;)t=t.parent;return!!t}rename(e){const t=this.parent;if(t&&t.getChildByName(e))throw new p("Entry filename already exists");this.name=e}}class $s extends Qs{constructor(e,t,r,s){super(e,t,r,s);const n=this;n.Reader=r.Reader,n.Writer=r.Writer,r.getData&&(n.getData=r.getData)}clone(){return new $s(this.fs,this.name,this)}async getData(e,t={}){const r=this;if(!e||e.constructor==r.Writer&&r.data)return r.data;{const s=r.reader=new r.Reader(r.data,t),n=r.data?r.data.uncompressedSize:s.size;await y.all([Ze(s),Ze(e,n)]);const{readable:a}=s;return r.uncompressedSize=s.size,await a.pipeTo(e.writable),e.getData?e.getData():e.writable}}isPasswordProtected(){return this.data.encrypted}async checkPassword(e,t={}){const r=this;if(!r.isPasswordProtected())return!0;t.password=e,t.checkPasswordOnly=!0;try{return await r.data.getData(null,t),!0}catch(e){if(e.message==et)return!1;throw e}}getText(e,t){return this.getData(new Se(e),t)}getBlob(e,t){return this.getData(new be(e),t)}getData64URI(e,t){return this.getData(new me(e),t)}getUint8Array(e){return this.getData(new Ne,e)}getWritable(e=new E,t){return this.getData({writable:e},t)}getArrayBuffer(e){return this.data.arrayBuffer(e)}replaceBlob(e){r.assign(this,{data:e,Reader:ye,Writer:be,reader:null})}replaceText(e){r.assign(this,{data:e,Reader:ze,Writer:Se,reader:null})}replaceData64URI(e){r.assign(this,{data:e,Reader:ge,Writer:me,reader:null})}replaceUint8Array(e){r.assign(this,{data:e,Reader:Be,Writer:Ne,reader:null})}replaceReadable(e){r.assign(this,{data:null,Reader:()=>({readable:e}),Writer:null,reader:null})}}class en extends Qs{constructor(e,t,r,s){super(e,t,r,s),this.directory=!0}clone(e){const t=this,r=new en(t.fs,t.name);return e&&(r.children=t.children.map(t=>{const s=t.clone(e);return s.parent=r,s})),r}addDirectory(e,t){return ln(this,e,{options:t},!0)}addText(e,t,r={}){return ln(this,e,{data:t,Reader:ze,Writer:Se,options:r,uncompressedSize:t.length})}addBlob(e,t,r={}){return ln(this,e,{data:t,Reader:ye,Writer:be,options:r,uncompressedSize:t.size})}addData64URI(e,t,r={}){let s=t.length;for(;"="==t.charAt(s-1);)s--;const n=t.indexOf(",")+1;return ln(this,e,{data:t,Reader:ge,Writer:me,options:r,uncompressedSize:i.floor(.75*(s-n))})}addUint8Array(e,t,r={}){return ln(this,e,{data:t,Reader:Be,Writer:Ne,options:r,uncompressedSize:t.length})}addHttpContent(e,t,r={}){return ln(this,e,{data:t,Reader:class extends _e{constructor(e){super(e,r)}},options:r})}addReadable(e,t,r={}){return ln(this,e,{Reader:()=>({readable:t}),options:r})}addFileSystemEntry(e,t={}){return an(this,e,t)}addFileSystemHandle(e,t={}){return an(this,e,t)}addFile(e,t={}){return t.lastModDate||(t.lastModDate=new o(e.lastModified)),ln(this,e.name,{data:e,Reader:()=>({readable:e.stream(),size:e.size}),options:t,uncompressedSize:e.size})}addData(e,t){return ln(this,e,t)}importBlob(e,t){return this.importZip(new ye(e),t)}importData64URI(e,t){return this.importZip(new ge(e),t)}importUint8Array(e,t){return this.importZip(new Be(e),t)}importHttpContent(e,t){return this.importZip(new _e(e,t),t)}importReadable(e,t){return this.importZip({readable:e},t)}exportBlob(e={}){return this.exportZip(new be(e.mimeType||"application/zip"),e)}exportData64URI(e={}){return this.exportZip(new me(e.mimeType||"application/zip"),e)}exportUint8Array(e={}){return this.exportZip(new Ne,e)}async exportWritable(e=new E,t={}){return await this.exportZip({writable:e},t),e}async importZip(e,t={}){await Ze(e);const s=new hs(e,t),n=[],a=await s.getEntries();for(const e of a){let s=this;try{const a=e.filename.split("/"),i=a.pop();a.forEach((t,r)=>{const i=s;s=s.getChildByName(t),s||(s=new en(this.fs,t,{data:r==a.length-1?e:null},i),n.push(s))}),e.directory||n.push(ln(s,i,{data:e,Reader:rn(r.assign({},t)),uncompressedSize:e.uncompressedSize,passThrough:t.passThrough}))}catch(t){try{t.cause={entry:e}}catch{}throw t}}return n}async exportZip(e,s){const n=this;s.bufferedWrite===Q&&(s.bufferedWrite=!0),await y.all([sn(n,s.readerOptions),Ze(e)]);const a=new Bs(e,s);return await(async(e,s,n,a)=>{const i=s,o=new c;await async function e(s,c){async function l(c){const l=a.relativePath?c.getRelativeName(i):c.getFullname(),d=c.options||{};let u={};if(c.data instanceof Yr){const{externalFileAttributes:e,versionMadeBy:t,comment:s,lastModDate:n,creationDate:a,lastAccessDate:i,uncompressedSize:o,encrypted:l,zipCrypto:d,signature:p,compressionMethod:f,extraFieldAES:h}=c.data;if(u={externalFileAttributes:e,versionMadeBy:t,comment:s,lastModDate:n,creationDate:a,lastAccessDate:i},c.passThrough){let e,t;0===f&&(e=0),h&&(t=h.strength),u=r.assign(u,{passThrough:!0,encrypted:l,zipCrypto:d,signature:p,uncompressedSize:o,level:e,encryptionStrength:t,compressionMethod:f})}}await s.add(l,c.reader,r.assign({},a,u,d,{directory:c.directory,onprogress:async e=>{if(a.onprogress){o.set(l,e);try{await a.onprogress(t.from(o.values()).reduce((e,t)=>e+t),n)}catch{}}}})),await e(s,c)}await(async()=>{if(a.bufferedWrite)await y.allSettled(c.children.map(l));else for(const e of c.children)await l(e)})()}(e,s)})(a,n,(e=>{let t=0;return e.forEach(function e(r){t+=r.uncompressedSize,r.children&&r.children.forEach(e)}),t})([n]),s),await a.close(),e.getData?e.getData():e.writable}getChildByName(e){const t=this.children;for(let r=0;r<t.length;r++){const s=t[r];if(s.name==e)return s}}isPasswordProtected(){const e=this.children;for(let t=0;t<e.length;t++)if(e[t].isPasswordProtected())return!0;return!1}async checkPassword(e,t={}){const r=this.children;return!(await y.all(r.map(r=>r.checkPassword(e,t)))).includes(!1)}}const tn={FS:class{constructor(){cn(this)}get children(){return this.root.children}remove(e){nn(e),this.entries[e.id]=null}move(e,t){if(e==this.root)throw new p("Root directory cannot be moved");if(!t.directory)throw new p("Target entry is not a directory");if(t.isDescendantOf(e))throw new p("Entry is a ancestor of target entry");if(e!=t){if(t.getChildByName(e.name))throw new p("Entry filename already exists");nn(e),e.parent=t,t.children.push(e)}}find(e){const t=e.split("/");let r=this.root;for(let e=0;r&&e<t.length;e++)r=r.getChildByName(t[e]);return r}getById(e){return this.entries[e]}getChildByName(e){return this.root.getChildByName(e)}addDirectory(e,t){return this.root.addDirectory(e,t)}addText(e,t,r){return this.root.addText(e,t,r)}addBlob(e,t,r){return this.root.addBlob(e,t,r)}addData64URI(e,t,r){return this.root.addData64URI(e,t,r)}addUint8Array(e,t,r){return this.root.addUint8Array(e,t,r)}addHttpContent(e,t,r){return this.root.addHttpContent(e,t,r)}addReadable(e,t,r){return this.root.addReadable(e,t,r)}addFileSystemEntry(e,t){return this.root.addFileSystemEntry(e,t)}addFileSystemHandle(e,t){return this.root.addFileSystemHandle(e,t)}addFile(e,t){return this.root.addFile(e,t)}addData(e,t){return this.root.addData(e,t)}importBlob(e,t){return cn(this),this.root.importBlob(e,t)}importData64URI(e,t){return cn(this),this.root.importData64URI(e,t)}importUint8Array(e,t){return cn(this),this.root.importUint8Array(e,t)}importHttpContent(e,t){return cn(this),this.root.importHttpContent(e,t)}importReadable(e,t){return cn(this),this.root.importReadable(e,t)}importZip(e,t){return this.root.importZip(e,t)}exportBlob(e){return this.root.exportBlob(e)}exportData64URI(e){return this.root.exportData64URI(e)}exportUint8Array(e){return this.root.exportUint8Array(e)}exportWritable(e,t){return this.root.exportWritable(e,t)}isPasswordProtected(){return this.root.isPasswordProtected()}checkPassword(e,t){return this.root.checkPassword(e,t)}},ZipDirectoryEntry:en,ZipFileEntry:$s};function rn(e){return class extends he{constructor(e,t={}){super(),this.entry=e,this.options=t}async init(){const t=this;t.size=t.entry.uncompressedSize;const s=await t.entry.getData(new be,r.assign({},t.options,e));t.data=s,t.blobReader=new ye(s),super.init()}readUint8Array(e,t){return this.blobReader.readUint8Array(e,t)}}}async function sn(e,t){e.children.length&&await y.all(e.children.map(async e=>{if(e.directory)await sn(e,t);else{const r=e.reader=new e.Reader(e.data,t);try{await Ze(r)}catch(t){try{t.entryId=e.id,t.cause={entry:e}}catch{}throw t}e.uncompressedSize=r.size}}))}function nn(e){if(e.parent){const t=e.parent.children;t.forEach((r,s)=>{r.id==e.id&&t.splice(s,1)})}}function an(e,t,s){return async function e(t,n,a){if(n)try{if((n.isFile||n.isDirectory)&&(n=await on(n)),"file"==n.kind){const e=await n.getFile();a.push(t.addData(e.name,{Reader:()=>({readable:e.stream(),size:e.size}),options:r.assign({},{lastModDate:new o(e.lastModified)},s),uncompressedSize:e.size}))}else if("directory"==n.kind){const r=t.addDirectory(n.name);a.push(r);for await(const t of n.values())await e(r,t,a)}}catch(e){const t=e.message+(n?" ("+n.name+")":"");throw new p(t)}return a}(e,t,[])}async function on(e){const t={name:e.name};if(e.isFile&&(t.kind="file",t.getFile=()=>new y((t,r)=>e.file(t,r))),e.isDirectory){t.kind="directory";const r=await(async e=>{const t=[];function r(e,s,n){e.readEntries(async a=>{if(a.length){for(const e of a)t.push(await on(e));r(e,s,n)}else s(t)},n)}return await new y((t,s)=>r(e.createReader(),t,s)),{[Symbol.iterator](){let e=0;return{next(){const r={value:t[e],done:e==t.length};return e++,r}}}}})(e);t.values=()=>r}return t}function cn(e){e.entries=[],e.root=new en(e)}function ln(e,t,r,s){if(e.directory)return s?new en(e.fs,t,r,e):new $s(e.fs,t,r,e);throw new p("Parent entry is not a directory")}e.fs=tn});