@zip.js/zip.js
Advanced tools
Comparing version 2.0.1 to 2.0.2
@@ -1,1 +0,1 @@ | ||
!function(){"use strict";const t="function";function e(e,n){return class{constructor(s){const i=t=>{if(this.pendingData){const e=this.pendingData;this.pendingData=new Uint8Array(e.length+t.length),this.pendingData.set(e,0),this.pendingData.set(t,e.length)}else this.pendingData=new Uint8Array(t)};if(this.codec=new e(Object.assign({},n,s)),typeof this.codec.onData==t)this.codec.onData=i;else{if(typeof this.codec.on!=t)throw new Error("Cannot register the callback function");this.codec.on("data",i)}}async append(t){return this.codec.push(t),s(this)}async flush(){return this.codec.push(new Uint8Array(0),!0),s(this)}};function s(t){if(t.pendingData){const e=t.pendingData;return t.pendingData=null,e}return new Uint8Array(0)}}class n{constructor(){this.crc=-1,this.table=(()=>{const t=[];for(let e=0;e<256;e++){let n=e;for(let t=0;t<8;t++)1&n?n=n>>>1^3988292384:n>>>=1;t[e]=n}return t})()}append(t){const e=this.table;let n=0|this.crc;for(let s=0,i=0|t.length;s<i;s++)n=n>>>8^e[255&(n^t[s])];this.crc=n}get(){return~this.crc}}const s="Invalid pasword",i=16,a="raw",r={name:"PBKDF2"},c={name:"HMAC"},h="SHA-1",p={name:"AES-CTR"},o=Object.assign({hash:c},r),u=Object.assign({iterations:1e3,hash:{name:h}},r),d=Object.assign({hash:h},c),l=Object.assign({length:i},p),y=["deriveBits"],g=["sign"],w=528,f=10,b=[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],A=crypto.subtle;class U{constructor(t,e){this.password=t,this.signed=e,this.input=e&&new Uint8Array(0),this.pendingInput=new Uint8Array(0)}async append(t){const e=async(s=0)=>{if(s+i<=r.length-f){const t=r.subarray(s,s+i),a=await A.decrypt(Object.assign({counter:this.counter},l),this.keys.decrypt,t);return D(this.counter),n.set(new Uint8Array(a),s),e(s+i)}return this.pendingInput=r.subarray(s),this.signed&&(this.input=I(this.input,t)),n};if(this.password){const e=t.subarray(0,18);await async function(t,e,n){t.counter=new Uint8Array(b);const i=e.subarray(0,16),r=e.subarray(16),c=(new TextEncoder).encode(n),h=await A.importKey(a,c,o,!1,y),l=await A.deriveBits(Object.assign({salt:i},u),h,528),w=new Uint8Array(l),f=w.subarray(64);if(t.keys={decrypt:await A.importKey(a,w.subarray(0,32),p,!0,["decrypt"]),authentication:await A.importKey(a,w.subarray(32,64),d,!1,g),passwordVerification:f},f[0]!=r[0]||f[1]!=r[1])throw new Error(s)}(this,e,this.password),this.password=null,t=t.subarray(18)}let n=new Uint8Array(t.length-f-(t.length-f)%i),r=t;return this.pendingInput.length&&(r=I(this.pendingInput,t),n=k(n,r.length-f-(r.length-f)%i)),e()}async flush(){const t=this.pendingInput,e=this.keys,n=t.subarray(0,t.length-f),s=t.subarray(t.length-f);let i=new Uint8Array(0);if(n.length){const t=await A.decrypt(Object.assign({counter:this.counter},l),e.decrypt,n);i=new Uint8Array(t)}let a=!0;if(this.signed){const t=await A.sign(c,e.authentication,this.input.subarray(0,this.input.length-f)),n=new Uint8Array(t);this.input=null;for(let t=0;t<f;t++)n[t]!=s[t]&&(a=!1)}return{valid:a,data:i}}}class m{constructor(t){this.password=t,this.output=new Uint8Array(0),this.pendingInput=new Uint8Array(0)}async append(t){const e=async(a=0)=>{if(a+i<=t.length){const r=t.subarray(a,a+i),c=await A.encrypt(Object.assign({counter:this.counter},l),this.keys.encrypt,r);return D(this.counter),s.set(new Uint8Array(c),a+n.length),e(a+i)}return this.pendingInput=t.subarray(a),this.output=I(this.output,s),s};let n=new Uint8Array(0);this.password&&(n=await async function(t,e){t.counter=new Uint8Array(b);const n=crypto.getRandomValues(new Uint8Array(16)),s=(new TextEncoder).encode(e),i=await A.importKey(a,s,o,!1,y),r=await A.deriveBits(Object.assign({salt:n},u),i,w),c=new Uint8Array(r);return t.keys={encrypt:await A.importKey(a,c.subarray(0,32),p,!0,["encrypt"]),authentication:await A.importKey(a,c.subarray(32,64),d,!1,g),passwordVerification:c.subarray(64)},I(n,t.keys.passwordVerification)}(this,this.password),this.password=null);let s=new Uint8Array(n.length+t.length-t.length%i);return s.set(n,0),this.pendingInput.length&&(t=I(this.pendingInput,t),s=k(s,t.length-t.length%i)),e()}async flush(){let t=new Uint8Array(0);if(this.pendingInput.length){const e=await A.encrypt(Object.assign({counter:this.counter},l),this.keys.encrypt,this.pendingInput);t=new Uint8Array(e),this.output=I(this.output,t)}const e=await A.sign(c,this.keys.authentication,this.output.subarray(18));this.output=null;const n=new Uint8Array(e).subarray(0,f);return{data:I(t,n),signature:n}}}function D(t){for(let e=0;e<16;e++){if(255!=t[e]){t[e]++;break}t[e]=0}}function I(t,e){let n=t;return t.length+e.length&&(n=new Uint8Array(t.length+e.length),n.set(t,0),n.set(e,t.length)),n}function k(t,e){if(e&&e>t.length){const n=t;(t=new Uint8Array(e)).set(n,0)}return t}const v="Invalid signature";class E{constructor(t){this.signature=t.inputSignature,this.encrypted=Boolean(t.inputPassword),this.signed=t.inputSigned,this.compressed=t.inputCompressed,this.inflate=this.compressed&&new ZipInflate,this.crc32=this.signed&&this.signed&&new n,this.decrypt=this.encrypted&&new U(t.inputPassword)}async append(t){return this.encrypted&&(t=await this.decrypt.append(t)),this.compressed&&t.length&&(t=await this.inflate.append(t)),!this.encrypted&&this.signed&&this.crc32.append(t),t}async flush(){let t,e=new Uint8Array(0);if(this.encrypted){const t=await this.decrypt.flush();if(!t.valid)throw new Error(v);e=t.data}else if(this.signed){const e=new DataView(new Uint8Array(4).buffer);if(t=this.crc32.get(),e.setUint32(0,t),this.signature!=e.getUint32(0,!1))throw new Error(v)}return this.compressed&&(e=await this.inflate.append(e)||new Uint8Array(0),await this.inflate.flush()),{data:e,signature:t}}}class j{constructor(t){this.encrypted=t.outputEncrypted,this.signed=t.outputSigned,this.compressed=t.outputCompressed,this.deflate=this.compressed&&new ZipDeflate({level:t.level||5}),this.crc32=this.signed&&new n,this.encrypt=this.encrypted&&new m(t.outputPassword)}async append(t){let e=t;return this.compressed&&t.length&&(e=await this.deflate.append(t)),this.encrypted?e=await this.encrypt.append(e):this.signed&&this.crc32.append(t),e}async flush(){let t,e=new Uint8Array(0);if(this.compressed&&(e=await this.deflate.flush()||new Uint8Array(0)),this.encrypted){e=await this.encrypt.append(e);const n=await this.encrypt.flush();t=n.signature;const s=new Uint8Array(e.length+n.data.length);s.set(e,0),s.set(n.data,e.length),e=s}else this.signed&&(t=this.crc32.get());return{data:e,signature:t}}}const O={init(t){t.scripts&&t.scripts.length>0&&t.scripts.length&&importScripts.apply(void 0,t.scripts);const e=t.options;self.initExternalCodec&&self.initExternalCodec(),C=function(t){return t.codecType.startsWith("deflate")?new j(t):t.codecType.startsWith("inflate")?new E(t):void 0}(e)},append:async t=>({data:await C.append(t.data)}),flush:()=>C.flush()};let C;addEventListener("message",(async t=>{const e=t.data,n=e.type,s=O[n];if(s)try{const t=await s(e)||{};if(t.type=n,t.data)try{postMessage(t,[t.data.buffer])}catch(e){postMessage(t)}else postMessage(t)}catch(t){postMessage({type:n,error:{message:t.message,stack:t.stack}})}})),self.initExternalCodec=()=>{const{ZipDeflate:t,ZipInflate:n}=((t,n={})=>({ZipDeflate:e(t.Deflate,n.deflate),ZipInflate:e(t.Inflate,n.inflate)}))(pako,{deflate:{raw:!0},inflate:{raw:!0}});self.ZipDeflate=t,self.ZipInflate=n}}(); | ||
!function(){"use strict";const t="function";function e(e,n){return class{constructor(s){const i=t=>{if(this.pendingData){const e=this.pendingData;this.pendingData=new Uint8Array(e.length+t.length),this.pendingData.set(e,0),this.pendingData.set(t,e.length)}else this.pendingData=new Uint8Array(t)};if(this.codec=new e(Object.assign({},n,s)),typeof this.codec.onData==t)this.codec.onData=i;else{if(typeof this.codec.on!=t)throw new Error("Cannot register the callback function");this.codec.on("data",i)}}async append(t){return this.codec.push(t),s(this)}async flush(){return this.codec.push(new Uint8Array(0),!0),s(this)}};function s(t){if(t.pendingData){const e=t.pendingData;return t.pendingData=null,e}return new Uint8Array(0)}}class n{constructor(){this.crc=-1,this.table=(()=>{const t=[];for(let e=0;e<256;e++){let n=e;for(let t=0;t<8;t++)1&n?n=n>>>1^3988292384:n>>>=1;t[e]=n}return t})()}append(t){const e=this.table;let n=0|this.crc;for(let s=0,i=0|t.length;s<i;s++)n=n>>>8^e[255&(n^t[s])];this.crc=n}get(){return~this.crc}}const s="Invalid pasword",i=16,a="raw",r={name:"PBKDF2"},c={name:"HMAC"},h="SHA-1",p={name:"AES-CTR"},o=Object.assign({hash:c},r),u=Object.assign({iterations:1e3,hash:{name:h}},r),d=Object.assign({hash:h},c),l=Object.assign({length:i},p),y=["deriveBits"],g=["sign"],w=528,f=10,b=[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],A=crypto.subtle;class U{constructor(t,e){this.password=t,this.signed=e,this.input=e&&new Uint8Array(0),this.pendingInput=new Uint8Array(0)}async append(t){const e=async(s=0)=>{if(s+i<=r.length-f){const t=r.subarray(s,s+i),a=await A.decrypt(Object.assign({counter:this.counter},l),this.keys.decrypt,t);return D(this.counter),n.set(new Uint8Array(a),s),e(s+i)}return this.pendingInput=r.subarray(s),this.signed&&(this.input=I(this.input,t)),n};if(this.password){const e=t.subarray(0,18);await async function(t,e,n){t.counter=new Uint8Array(b);const i=e.subarray(0,16),r=e.subarray(16),c=(new TextEncoder).encode(n),h=await A.importKey(a,c,o,!1,y),l=await A.deriveBits(Object.assign({salt:i},u),h,528),w=new Uint8Array(l),f=w.subarray(64);if(t.keys={decrypt:await A.importKey(a,w.subarray(0,32),p,!0,["decrypt"]),authentication:await A.importKey(a,w.subarray(32,64),d,!1,g),passwordVerification:f},f[0]!=r[0]||f[1]!=r[1])throw new Error(s)}(this,e,this.password),this.password=null,t=t.subarray(18)}let n=new Uint8Array(t.length-f-(t.length-f)%i),r=t;return this.pendingInput.length&&(r=I(this.pendingInput,t),n=k(n,r.length-f-(r.length-f)%i)),e()}async flush(){const t=this.pendingInput,e=this.keys,n=t.subarray(0,t.length-f),s=t.subarray(t.length-f);let i=new Uint8Array(0);if(n.length){const t=await A.decrypt(Object.assign({counter:this.counter},l),e.decrypt,n);i=new Uint8Array(t)}let a=!0;if(this.signed){const t=await A.sign(c,e.authentication,this.input.subarray(0,this.input.length-f)),n=new Uint8Array(t);this.input=null;for(let t=0;t<f;t++)n[t]!=s[t]&&(a=!1)}return{valid:a,data:i}}}class m{constructor(t){this.password=t,this.output=new Uint8Array(0),this.pendingInput=new Uint8Array(0)}async append(t){const e=async(a=0)=>{if(a+i<=t.length){const r=t.subarray(a,a+i),c=await A.encrypt(Object.assign({counter:this.counter},l),this.keys.encrypt,r);return D(this.counter),s.set(new Uint8Array(c),a+n.length),e(a+i)}return this.pendingInput=t.subarray(a),this.output=I(this.output,s),s};let n=new Uint8Array(0);this.password&&(n=await async function(t,e){t.counter=new Uint8Array(b);const n=crypto.getRandomValues(new Uint8Array(16)),s=(new TextEncoder).encode(e),i=await A.importKey(a,s,o,!1,y),r=await A.deriveBits(Object.assign({salt:n},u),i,w),c=new Uint8Array(r);return t.keys={encrypt:await A.importKey(a,c.subarray(0,32),p,!0,["encrypt"]),authentication:await A.importKey(a,c.subarray(32,64),d,!1,g),passwordVerification:c.subarray(64)},I(n,t.keys.passwordVerification)}(this,this.password),this.password=null);let s=new Uint8Array(n.length+t.length-t.length%i);return s.set(n,0),this.pendingInput.length&&(t=I(this.pendingInput,t),s=k(s,t.length-t.length%i)),e()}async flush(){let t=new Uint8Array(0);if(this.pendingInput.length){const e=await A.encrypt(Object.assign({counter:this.counter},l),this.keys.encrypt,this.pendingInput);t=new Uint8Array(e),this.output=I(this.output,t)}const e=await A.sign(c,this.keys.authentication,this.output.subarray(18));this.output=null;const n=new Uint8Array(e).subarray(0,f);return{data:I(t,n),signature:n}}}function D(t){for(let e=0;e<16;e++){if(255!=t[e]){t[e]++;break}t[e]=0}}function I(t,e){let n=t;return t.length+e.length&&(n=new Uint8Array(t.length+e.length),n.set(t,0),n.set(e,t.length)),n}function k(t,e){if(e&&e>t.length){const n=t;(t=new Uint8Array(e)).set(n,0)}return t}const v="Invalid signature";class E{constructor(t){this.signature=t.inputSignature,this.encrypted=Boolean(t.inputPassword),this.signed=t.inputSigned,this.compressed=t.inputCompressed,this.inflate=this.compressed&&new ZipInflate,this.crc32=this.signed&&this.signed&&new n,this.decrypt=this.encrypted&&new U(t.inputPassword)}async append(t){return this.encrypted&&(t=await this.decrypt.append(t)),this.compressed&&t.length&&(t=await this.inflate.append(t)),!this.encrypted&&this.signed&&this.crc32.append(t),t}async flush(){let t,e=new Uint8Array(0);if(this.encrypted){const t=await this.decrypt.flush();if(!t.valid)throw new Error(v);e=t.data}else if(this.signed){const e=new DataView(new Uint8Array(4).buffer);if(t=this.crc32.get(),e.setUint32(0,t),this.signature!=e.getUint32(0,!1))throw new Error(v)}return this.compressed&&(e=await this.inflate.append(e)||new Uint8Array(0),await this.inflate.flush()),{data:e,signature:t}}}class j{constructor(t){this.encrypted=t.outputEncrypted,this.signed=t.outputSigned,this.compressed=t.outputCompressed,this.deflate=this.compressed&&new ZipDeflate({level:t.level||5}),this.crc32=this.signed&&new n,this.encrypt=this.encrypted&&new m(t.outputPassword)}async append(t){let e=t;return this.compressed&&t.length&&(e=await this.deflate.append(t)),this.encrypted?e=await this.encrypt.append(e):this.signed&&this.crc32.append(t),e}async flush(){let t,e=new Uint8Array(0);if(this.compressed&&(e=await this.deflate.flush()||new Uint8Array(0)),this.encrypted){e=await this.encrypt.append(e);const n=await this.encrypt.flush();t=n.signature;const s=new Uint8Array(e.length+n.data.length);s.set(e,0),s.set(n.data,e.length),e=s}else this.signed&&(t=this.crc32.get());return{data:e,signature:t}}}const O={init(t){t.scripts&&t.scripts.length&&importScripts.apply(void 0,t.scripts);const e=t.options;self.initExternalCodec&&self.initExternalCodec(),C=function(t){return t.codecType.startsWith("deflate")?new j(t):t.codecType.startsWith("inflate")?new E(t):void 0}(e)},append:async t=>({data:await C.append(t.data)}),flush:()=>C.flush()};let C;addEventListener("message",(async t=>{const e=t.data,n=e.type,s=O[n];if(s)try{const t=await s(e)||{};if(t.type=n,t.data)try{postMessage(t,[t.data.buffer])}catch(e){postMessage(t)}else postMessage(t)}catch(t){postMessage({type:n,error:{message:t.message,stack:t.stack}})}})),self.initExternalCodec=()=>{const{ZipDeflate:t,ZipInflate:n}=((t,n={})=>({ZipDeflate:e(t.Deflate,n.deflate),ZipInflate:e(t.Inflate,n.inflate)}))(pako,{deflate:{raw:!0},inflate:{raw:!0}});self.ZipDeflate=t,self.ZipInflate=n}}(); |
@@ -1,1 +0,1 @@ | ||
!function(){"use strict";class t{constructor(){this.crc=-1,this.table=(()=>{const t=[];for(let e=0;e<256;e++){let n=e;for(let t=0;t<8;t++)1&n?n=n>>>1^3988292384:n>>>=1;t[e]=n}return t})()}append(t){const e=this.table;let n=0|this.crc;for(let s=0,i=0|t.length;s<i;s++)n=n>>>8^e[255&(n^t[s])];this.crc=n}get(){return~this.crc}}const e="Invalid pasword",n=16,s="raw",i={name:"PBKDF2"},r={name:"HMAC"},a="SHA-1",c={name:"AES-CTR"},h=Object.assign({hash:r},i),p=Object.assign({iterations:1e3,hash:{name:a}},i),o=Object.assign({hash:a},r),u=Object.assign({length:n},c),d=["deriveBits"],y=["sign"],l=528,g=10,w=[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],f=crypto.subtle;class b{constructor(t,e){this.password=t,this.signed=e,this.input=e&&new Uint8Array(0),this.pendingInput=new Uint8Array(0)}async append(t){const i=async(e=0)=>{if(e+n<=a.length-g){const t=a.subarray(e,e+n),s=await f.decrypt(Object.assign({counter:this.counter},u),this.keys.decrypt,t);return U(this.counter),r.set(new Uint8Array(s),e),i(e+n)}return this.pendingInput=a.subarray(e),this.signed&&(this.input=m(this.input,t)),r};if(this.password){const n=t.subarray(0,18);await async function(t,n,i){t.counter=new Uint8Array(w);const r=n.subarray(0,16),a=n.subarray(16),u=(new TextEncoder).encode(i),l=await f.importKey(s,u,h,!1,d),g=await f.deriveBits(Object.assign({salt:r},p),l,528),b=new Uint8Array(g),A=b.subarray(64);if(t.keys={decrypt:await f.importKey(s,b.subarray(0,32),c,!0,["decrypt"]),authentication:await f.importKey(s,b.subarray(32,64),o,!1,y),passwordVerification:A},A[0]!=a[0]||A[1]!=a[1])throw new Error(e)}(this,n,this.password),this.password=null,t=t.subarray(18)}let r=new Uint8Array(t.length-g-(t.length-g)%n),a=t;return this.pendingInput.length&&(a=m(this.pendingInput,t),r=I(r,a.length-g-(a.length-g)%n)),i()}async flush(){const t=this.pendingInput,e=this.keys,n=t.subarray(0,t.length-g),s=t.subarray(t.length-g);let i=new Uint8Array(0);if(n.length){const t=await f.decrypt(Object.assign({counter:this.counter},u),e.decrypt,n);i=new Uint8Array(t)}let a=!0;if(this.signed){const t=await f.sign(r,e.authentication,this.input.subarray(0,this.input.length-g)),n=new Uint8Array(t);this.input=null;for(let t=0;t<g;t++)n[t]!=s[t]&&(a=!1)}return{valid:a,data:i}}}class A{constructor(t){this.password=t,this.output=new Uint8Array(0),this.pendingInput=new Uint8Array(0)}async append(t){const e=async(s=0)=>{if(s+n<=t.length){const a=t.subarray(s,s+n),c=await f.encrypt(Object.assign({counter:this.counter},u),this.keys.encrypt,a);return U(this.counter),r.set(new Uint8Array(c),s+i.length),e(s+n)}return this.pendingInput=t.subarray(s),this.output=m(this.output,r),r};let i=new Uint8Array(0);this.password&&(i=await async function(t,e){t.counter=new Uint8Array(w);const n=crypto.getRandomValues(new Uint8Array(16)),i=(new TextEncoder).encode(e),r=await f.importKey(s,i,h,!1,d),a=await f.deriveBits(Object.assign({salt:n},p),r,l),u=new Uint8Array(a);return t.keys={encrypt:await f.importKey(s,u.subarray(0,32),c,!0,["encrypt"]),authentication:await f.importKey(s,u.subarray(32,64),o,!1,y),passwordVerification:u.subarray(64)},m(n,t.keys.passwordVerification)}(this,this.password),this.password=null);let r=new Uint8Array(i.length+t.length-t.length%n);return r.set(i,0),this.pendingInput.length&&(t=m(this.pendingInput,t),r=I(r,t.length-t.length%n)),e()}async flush(){let t=new Uint8Array(0);if(this.pendingInput.length){const e=await f.encrypt(Object.assign({counter:this.counter},u),this.keys.encrypt,this.pendingInput);t=new Uint8Array(e),this.output=m(this.output,t)}const e=await f.sign(r,this.keys.authentication,this.output.subarray(18));this.output=null;const n=new Uint8Array(e).subarray(0,g);return{data:m(t,n),signature:n}}}function U(t){for(let e=0;e<16;e++){if(255!=t[e]){t[e]++;break}t[e]=0}}function m(t,e){let n=t;return t.length+e.length&&(n=new Uint8Array(t.length+e.length),n.set(t,0),n.set(e,t.length)),n}function I(t,e){if(e&&e>t.length){const n=t;(t=new Uint8Array(e)).set(n,0)}return t}const v="Invalid signature";class k{constructor(e){this.signature=e.inputSignature,this.encrypted=Boolean(e.inputPassword),this.signed=e.inputSigned,this.compressed=e.inputCompressed,this.inflate=this.compressed&&new ZipInflate,this.crc32=this.signed&&this.signed&&new t,this.decrypt=this.encrypted&&new b(e.inputPassword)}async append(t){return this.encrypted&&(t=await this.decrypt.append(t)),this.compressed&&t.length&&(t=await this.inflate.append(t)),!this.encrypted&&this.signed&&this.crc32.append(t),t}async flush(){let t,e=new Uint8Array(0);if(this.encrypted){const t=await this.decrypt.flush();if(!t.valid)throw new Error(v);e=t.data}else if(this.signed){const e=new DataView(new Uint8Array(4).buffer);if(t=this.crc32.get(),e.setUint32(0,t),this.signature!=e.getUint32(0,!1))throw new Error(v)}return this.compressed&&(e=await this.inflate.append(e)||new Uint8Array(0),await this.inflate.flush()),{data:e,signature:t}}}class j{constructor(e){this.encrypted=e.outputEncrypted,this.signed=e.outputSigned,this.compressed=e.outputCompressed,this.deflate=this.compressed&&new ZipDeflate({level:e.level||5}),this.crc32=this.signed&&new t,this.encrypt=this.encrypted&&new A(e.outputPassword)}async append(t){let e=t;return this.compressed&&t.length&&(e=await this.deflate.append(t)),this.encrypted?e=await this.encrypt.append(e):this.signed&&this.crc32.append(t),e}async flush(){let t,e=new Uint8Array(0);if(this.compressed&&(e=await this.deflate.flush()||new Uint8Array(0)),this.encrypted){e=await this.encrypt.append(e);const n=await this.encrypt.flush();t=n.signature;const s=new Uint8Array(e.length+n.data.length);s.set(e,0),s.set(n.data,e.length),e=s}else this.signed&&(t=this.crc32.get());return{data:e,signature:t}}}const E={init(t){t.scripts&&t.scripts.length>0&&t.scripts.length&&importScripts.apply(void 0,t.scripts);const e=t.options;self.initExternalCodec&&self.initExternalCodec(),O=function(t){return t.codecType.startsWith("deflate")?new j(t):t.codecType.startsWith("inflate")?new k(t):void 0}(e)},append:async t=>({data:await O.append(t.data)}),flush:()=>O.flush()};let O;addEventListener("message",(async t=>{const e=t.data,n=e.type,s=E[n];if(s)try{const t=await s(e)||{};if(t.type=n,t.data)try{postMessage(t,[t.data.buffer])}catch(e){postMessage(t)}else postMessage(t)}catch(t){postMessage({type:n,error:{message:t.message,stack:t.stack}})}}))}(); | ||
!function(){"use strict";class t{constructor(){this.crc=-1,this.table=(()=>{const t=[];for(let e=0;e<256;e++){let n=e;for(let t=0;t<8;t++)1&n?n=n>>>1^3988292384:n>>>=1;t[e]=n}return t})()}append(t){const e=this.table;let n=0|this.crc;for(let s=0,i=0|t.length;s<i;s++)n=n>>>8^e[255&(n^t[s])];this.crc=n}get(){return~this.crc}}const e="Invalid pasword",n=16,s="raw",i={name:"PBKDF2"},r={name:"HMAC"},a="SHA-1",c={name:"AES-CTR"},h=Object.assign({hash:r},i),p=Object.assign({iterations:1e3,hash:{name:a}},i),o=Object.assign({hash:a},r),u=Object.assign({length:n},c),d=["deriveBits"],y=["sign"],l=528,g=10,w=[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],f=crypto.subtle;class b{constructor(t,e){this.password=t,this.signed=e,this.input=e&&new Uint8Array(0),this.pendingInput=new Uint8Array(0)}async append(t){const i=async(e=0)=>{if(e+n<=a.length-g){const t=a.subarray(e,e+n),s=await f.decrypt(Object.assign({counter:this.counter},u),this.keys.decrypt,t);return U(this.counter),r.set(new Uint8Array(s),e),i(e+n)}return this.pendingInput=a.subarray(e),this.signed&&(this.input=m(this.input,t)),r};if(this.password){const n=t.subarray(0,18);await async function(t,n,i){t.counter=new Uint8Array(w);const r=n.subarray(0,16),a=n.subarray(16),u=(new TextEncoder).encode(i),l=await f.importKey(s,u,h,!1,d),g=await f.deriveBits(Object.assign({salt:r},p),l,528),b=new Uint8Array(g),A=b.subarray(64);if(t.keys={decrypt:await f.importKey(s,b.subarray(0,32),c,!0,["decrypt"]),authentication:await f.importKey(s,b.subarray(32,64),o,!1,y),passwordVerification:A},A[0]!=a[0]||A[1]!=a[1])throw new Error(e)}(this,n,this.password),this.password=null,t=t.subarray(18)}let r=new Uint8Array(t.length-g-(t.length-g)%n),a=t;return this.pendingInput.length&&(a=m(this.pendingInput,t),r=I(r,a.length-g-(a.length-g)%n)),i()}async flush(){const t=this.pendingInput,e=this.keys,n=t.subarray(0,t.length-g),s=t.subarray(t.length-g);let i=new Uint8Array(0);if(n.length){const t=await f.decrypt(Object.assign({counter:this.counter},u),e.decrypt,n);i=new Uint8Array(t)}let a=!0;if(this.signed){const t=await f.sign(r,e.authentication,this.input.subarray(0,this.input.length-g)),n=new Uint8Array(t);this.input=null;for(let t=0;t<g;t++)n[t]!=s[t]&&(a=!1)}return{valid:a,data:i}}}class A{constructor(t){this.password=t,this.output=new Uint8Array(0),this.pendingInput=new Uint8Array(0)}async append(t){const e=async(s=0)=>{if(s+n<=t.length){const a=t.subarray(s,s+n),c=await f.encrypt(Object.assign({counter:this.counter},u),this.keys.encrypt,a);return U(this.counter),r.set(new Uint8Array(c),s+i.length),e(s+n)}return this.pendingInput=t.subarray(s),this.output=m(this.output,r),r};let i=new Uint8Array(0);this.password&&(i=await async function(t,e){t.counter=new Uint8Array(w);const n=crypto.getRandomValues(new Uint8Array(16)),i=(new TextEncoder).encode(e),r=await f.importKey(s,i,h,!1,d),a=await f.deriveBits(Object.assign({salt:n},p),r,l),u=new Uint8Array(a);return t.keys={encrypt:await f.importKey(s,u.subarray(0,32),c,!0,["encrypt"]),authentication:await f.importKey(s,u.subarray(32,64),o,!1,y),passwordVerification:u.subarray(64)},m(n,t.keys.passwordVerification)}(this,this.password),this.password=null);let r=new Uint8Array(i.length+t.length-t.length%n);return r.set(i,0),this.pendingInput.length&&(t=m(this.pendingInput,t),r=I(r,t.length-t.length%n)),e()}async flush(){let t=new Uint8Array(0);if(this.pendingInput.length){const e=await f.encrypt(Object.assign({counter:this.counter},u),this.keys.encrypt,this.pendingInput);t=new Uint8Array(e),this.output=m(this.output,t)}const e=await f.sign(r,this.keys.authentication,this.output.subarray(18));this.output=null;const n=new Uint8Array(e).subarray(0,g);return{data:m(t,n),signature:n}}}function U(t){for(let e=0;e<16;e++){if(255!=t[e]){t[e]++;break}t[e]=0}}function m(t,e){let n=t;return t.length+e.length&&(n=new Uint8Array(t.length+e.length),n.set(t,0),n.set(e,t.length)),n}function I(t,e){if(e&&e>t.length){const n=t;(t=new Uint8Array(e)).set(n,0)}return t}const v="Invalid signature";class k{constructor(e){this.signature=e.inputSignature,this.encrypted=Boolean(e.inputPassword),this.signed=e.inputSigned,this.compressed=e.inputCompressed,this.inflate=this.compressed&&new ZipInflate,this.crc32=this.signed&&this.signed&&new t,this.decrypt=this.encrypted&&new b(e.inputPassword)}async append(t){return this.encrypted&&(t=await this.decrypt.append(t)),this.compressed&&t.length&&(t=await this.inflate.append(t)),!this.encrypted&&this.signed&&this.crc32.append(t),t}async flush(){let t,e=new Uint8Array(0);if(this.encrypted){const t=await this.decrypt.flush();if(!t.valid)throw new Error(v);e=t.data}else if(this.signed){const e=new DataView(new Uint8Array(4).buffer);if(t=this.crc32.get(),e.setUint32(0,t),this.signature!=e.getUint32(0,!1))throw new Error(v)}return this.compressed&&(e=await this.inflate.append(e)||new Uint8Array(0),await this.inflate.flush()),{data:e,signature:t}}}class j{constructor(e){this.encrypted=e.outputEncrypted,this.signed=e.outputSigned,this.compressed=e.outputCompressed,this.deflate=this.compressed&&new ZipDeflate({level:e.level||5}),this.crc32=this.signed&&new t,this.encrypt=this.encrypted&&new A(e.outputPassword)}async append(t){let e=t;return this.compressed&&t.length&&(e=await this.deflate.append(t)),this.encrypted?e=await this.encrypt.append(e):this.signed&&this.crc32.append(t),e}async flush(){let t,e=new Uint8Array(0);if(this.compressed&&(e=await this.deflate.flush()||new Uint8Array(0)),this.encrypted){e=await this.encrypt.append(e);const n=await this.encrypt.flush();t=n.signature;const s=new Uint8Array(e.length+n.data.length);s.set(e,0),s.set(n.data,e.length),e=s}else this.signed&&(t=this.crc32.get());return{data:e,signature:t}}}const E={init(t){t.scripts&&t.scripts.length&&importScripts.apply(void 0,t.scripts);const e=t.options;self.initExternalCodec&&self.initExternalCodec(),O=function(t){return t.codecType.startsWith("deflate")?new j(t):t.codecType.startsWith("inflate")?new k(t):void 0}(e)},append:async t=>({data:await O.append(t.data)}),flush:()=>O.flush()};let O;addEventListener("message",(async t=>{const e=t.data,n=e.type,s=E[n];if(s)try{const t=await s(e)||{};if(t.type=n,t.data)try{postMessage(t,[t.data.buffer])}catch(e){postMessage(t)}else postMessage(t)}catch(t){postMessage({type:n,error:{message:t.message,stack:t.stack}})}}))}(); |
@@ -1,1 +0,1 @@ | ||
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).zip={})}(this,(function(t){"use strict";const e="HTTP error ",n="text/plain";class s{constructor(){this.size=0}init(){this.initialized=!0}}class i extends s{}class r extends s{writeUint8Array(t){this.size+=t.length}}class a extends i{constructor(t){super(),this.blobReader=new p(new Blob([t],{type:n}))}init(){super.init(),this.blobReader.init(),this.size=this.blobReader.size}readUint8Array(t,e){return this.blobReader.readUint8Array(t,e)}}class o extends r{constructor(t){super(),this.encoding=t,this.blob=new Blob([],{type:n})}writeUint8Array(t){super.writeUint8Array(t),this.blob=new Blob([this.blob,t.buffer],{type:n})}getData(){const t=new FileReader;return new Promise(((e,n)=>{t.onload=t=>e(t.target.result),t.onerror=n,t.readAsText(this.blob,this.encoding)}))}}class d extends i{constructor(t){super(),this.dataURI=t;let e=t.length;for(;"="==t.charAt(e-1);)e--;this.dataStart=t.indexOf(",")+1,this.size=Math.floor(.75*(e-this.dataStart))}readUint8Array(t,e){const n=new Uint8Array(e),s=4*Math.floor(t/3),i=atob(this.dataURI.substring(s+this.dataStart,4*Math.ceil((t+e)/3)+this.dataStart)),r=t-3*Math.floor(s/4);for(let t=r;t<r+e;t++)n[t-r]=i.charCodeAt(t);return n}}class c extends r{constructor(t){super(),this.data="data:"+(t||"")+";base64,",this.pending=[]}writeUint8Array(t){super.writeUint8Array(t);let e=0,n=this.pending;const s=this.pending.length;for(this.pending="",e=0;e<3*Math.floor((s+t.length)/3)-s;e++)n+=String.fromCharCode(t[e]);for(;e<t.length;e++)this.pending+=String.fromCharCode(t[e]);n.length>2?this.data+=btoa(n):this.pending=n}getData(){return this.data+btoa(this.pending)}}class p extends i{constructor(t){super(),this.blob=t,this.size=t.size}readUint8Array(t,e){const n=new FileReader;return new Promise(((s,i)=>{n.onload=t=>s(new Uint8Array(t.target.result)),n.onerror=i,n.readAsArrayBuffer(this.blob.slice(t,t+e))}))}}class l extends r{constructor(t){super(),this.offset=0,this.contentType=t,this.blob=new Blob([],{type:t})}writeUint8Array(t){super.writeUint8Array(t),this.blob=new Blob([this.blob,t.buffer],{type:this.contentType}),this.offset=this.blob.size}getData(){return this.blob}}class m extends i{constructor(t){super(),this.url=t}async init(){if(super.init(),function(t){if("undefined"!=typeof document){const e=document.createElement("a");return e.href=t,"http:"==e.protocol||"https:"==e.protocol}return/^https?:\/\//i.test(t)}(this.url))return new Promise(((t,n)=>{const s=new XMLHttpRequest;s.addEventListener("load",(()=>{s.status<400?(this.size=Number(s.getResponseHeader("Content-Length")),this.size?t():u().then((()=>t())).catch(n)):n(e+(s.statusText||s.status)+".")}),!1),s.addEventListener("error",n,!1),s.open("HEAD",this.url),s.send()}));await u()}async readUint8Array(t,e){return this.data||await u(this,this.url),new Uint8Array(this.data.subarray(t,t+e))}}class h extends i{constructor(t){super(),this.url=t}init(){return super.init(),new Promise(((t,n)=>{const s=new XMLHttpRequest;s.addEventListener("load",(()=>{s.status<400?(this.size=Number(s.getResponseHeader("Content-Length")),"bytes"==s.getResponseHeader("Accept-Ranges")?t():n(new Error("HTTP Range not supported"))):n(e+(s.statusText||s.status)+".")}),!1),s.addEventListener("error",n,!1),s.open("HEAD",this.url),s.send()}))}readUint8Array(t,n){return new Promise(((s,i)=>{const r=new XMLHttpRequest;r.open("GET",this.url),r.responseType="arraybuffer",r.setRequestHeader("Range","bytes="+t+"-"+(t+n-1)),r.addEventListener("load",(()=>{r.status<400?s(new Uint8Array(r.response)):i(e+(r.statusText||r.status)+".")}),!1),r.addEventListener("error",i,!1),r.send()}))}}class f extends r{constructor(){super(),this.array=new Uint8Array(0)}writeUint8Array(t){super.writeUint8Array(t);const e=this.array;this.array=new Uint8Array(e.length+t.length),this.array.set(e),this.array.set(t,e.length)}getData(){return this.array}}function u(t,n){return new Promise(((s,i)=>{const r=new XMLHttpRequest;r.addEventListener("load",(()=>{r.status<400?(t.size||(t.size=Number(r.getResponseHeader("Content-Length"))||Number(r.response.byteLength)),t.data=new Uint8Array(r.response),s()):i(e+(r.statusText||r.status)+".")}),!1),r.addEventListener("error",i,!1),r.open("GET",n),r.responseType="arraybuffer",r.send()}))}class x{constructor(){this.crc=-1,this.table=(()=>{const t=[];for(let e=0;e<256;e++){let n=e;for(let t=0;t<8;t++)1&n?n=n>>>1^3988292384:n>>>=1;t[e]=n}return t})()}append(t){const e=this.table;let n=0|this.crc;for(let s=0,i=0|t.length;s<i;s++)n=n>>>8^e[255&(n^t[s])];this.crc=n}get(){return~this.crc}}const v="Invalid pasword",g=16,w="raw",y={name:"PBKDF2"},b={name:"HMAC"},k="SHA-1",z={name:"AES-CTR"},U=Object.assign({hash:b},y),A=Object.assign({iterations:1e3,hash:{name:k}},y),j=Object.assign({hash:k},b),E=Object.assign({length:g},z),D=["deriveBits"],R=["sign"],B=528,F=10,S=[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],q=crypto.subtle;class L{constructor(t,e){this.password=t,this.signed=e,this.input=e&&new Uint8Array(0),this.pendingInput=new Uint8Array(0)}async append(t){const e=async(i=0)=>{if(i+g<=s.length-F){const t=s.subarray(i,i+g),r=await q.decrypt(Object.assign({counter:this.counter},E),this.keys.decrypt,t);return M(this.counter),n.set(new Uint8Array(r),i),e(i+g)}return this.pendingInput=s.subarray(i),this.signed&&(this.input=C(this.input,t)),n};if(this.password){const e=t.subarray(0,18);await async function(t,e,n){t.counter=new Uint8Array(S);const s=e.subarray(0,16),i=e.subarray(16),r=(new TextEncoder).encode(n),a=await q.importKey(w,r,U,!1,D),o=await q.deriveBits(Object.assign({salt:s},A),a,528),d=new Uint8Array(o),c=d.subarray(64);if(t.keys={decrypt:await q.importKey(w,d.subarray(0,32),z,!0,["decrypt"]),authentication:await q.importKey(w,d.subarray(32,64),j,!1,R),passwordVerification:c},c[0]!=i[0]||c[1]!=i[1])throw new Error(v)}(this,e,this.password),this.password=null,t=t.subarray(18)}let n=new Uint8Array(t.length-F-(t.length-F)%g),s=t;return this.pendingInput.length&&(s=C(this.pendingInput,t),n=T(n,s.length-F-(s.length-F)%g)),e()}async flush(){const t=this.pendingInput,e=this.keys,n=t.subarray(0,t.length-F),s=t.subarray(t.length-F);let i=new Uint8Array(0);if(n.length){const t=await q.decrypt(Object.assign({counter:this.counter},E),e.decrypt,n);i=new Uint8Array(t)}let r=!0;if(this.signed){const t=await q.sign(b,e.authentication,this.input.subarray(0,this.input.length-F)),n=new Uint8Array(t);this.input=null;for(let t=0;t<F;t++)n[t]!=s[t]&&(r=!1)}return{valid:r,data:i}}}class I{constructor(t){this.password=t,this.output=new Uint8Array(0),this.pendingInput=new Uint8Array(0)}async append(t){const e=async(i=0)=>{if(i+g<=t.length){const r=t.subarray(i,i+g),a=await q.encrypt(Object.assign({counter:this.counter},E),this.keys.encrypt,r);return M(this.counter),s.set(new Uint8Array(a),i+n.length),e(i+g)}return this.pendingInput=t.subarray(i),this.output=C(this.output,s),s};let n=new Uint8Array(0);this.password&&(n=await async function(t,e){t.counter=new Uint8Array(S);const n=crypto.getRandomValues(new Uint8Array(16)),s=(new TextEncoder).encode(e),i=await q.importKey(w,s,U,!1,D),r=await q.deriveBits(Object.assign({salt:n},A),i,B),a=new Uint8Array(r);return t.keys={encrypt:await q.importKey(w,a.subarray(0,32),z,!0,["encrypt"]),authentication:await q.importKey(w,a.subarray(32,64),j,!1,R),passwordVerification:a.subarray(64)},C(n,t.keys.passwordVerification)}(this,this.password),this.password=null);let s=new Uint8Array(n.length+t.length-t.length%g);return s.set(n,0),this.pendingInput.length&&(t=C(this.pendingInput,t),s=T(s,t.length-t.length%g)),e()}async flush(){let t=new Uint8Array(0);if(this.pendingInput.length){const e=await q.encrypt(Object.assign({counter:this.counter},E),this.keys.encrypt,this.pendingInput);t=new Uint8Array(e),this.output=C(this.output,t)}const e=await q.sign(b,this.keys.authentication,this.output.subarray(18));this.output=null;const n=new Uint8Array(e).subarray(0,F);return{data:C(t,n),signature:n}}}function M(t){for(let e=0;e<16;e++){if(255!=t[e]){t[e]++;break}t[e]=0}}function C(t,e){let n=t;return t.length+e.length&&(n=new Uint8Array(t.length+e.length),n.set(t,0),n.set(e,t.length)),n}function T(t,e){if(e&&e>t.length){const n=t;(t=new Uint8Array(e)).set(n,0)}return t}const P="deflate",W="inflate",Z="Invalid signature";class V{constructor(t){this.signature=t.inputSignature,this.encrypted=Boolean(t.inputPassword),this.signed=t.inputSigned,this.compressed=t.inputCompressed,this.inflate=this.compressed&&new ZipInflate,this.crc32=this.signed&&this.signed&&new x,this.decrypt=this.encrypted&&new L(t.inputPassword)}async append(t){return this.encrypted&&(t=await this.decrypt.append(t)),this.compressed&&t.length&&(t=await this.inflate.append(t)),!this.encrypted&&this.signed&&this.crc32.append(t),t}async flush(){let t,e=new Uint8Array(0);if(this.encrypted){const t=await this.decrypt.flush();if(!t.valid)throw new Error(Z);e=t.data}else if(this.signed){const e=new DataView(new Uint8Array(4).buffer);if(t=this.crc32.get(),e.setUint32(0,t),this.signature!=e.getUint32(0,!1))throw new Error(Z)}return this.compressed&&(e=await this.inflate.append(e)||new Uint8Array(0),await this.inflate.flush()),{data:e,signature:t}}}class H{constructor(t){this.encrypted=t.outputEncrypted,this.signed=t.outputSigned,this.compressed=t.outputCompressed,this.deflate=this.compressed&&new ZipDeflate({level:t.level||5}),this.crc32=this.signed&&new x,this.encrypt=this.encrypted&&new I(t.outputPassword)}async append(t){let e=t;return this.compressed&&t.length&&(e=await this.deflate.append(t)),this.encrypted?e=await this.encrypt.append(e):this.signed&&this.crc32.append(t),e}async flush(){let t,e=new Uint8Array(0);if(this.compressed&&(e=await this.deflate.flush()||new Uint8Array(0)),this.encrypted){e=await this.encrypt.append(e);const n=await this.encrypt.flush();t=n.signature;const s=new Uint8Array(e.length+n.data.length);s.set(e,0),s.set(n.data,e.length),e=s}else this.signed&&(t=this.crc32.get());return{data:e,signature:t}}}const O="init",N="append",K="flush",X="message",_="z-worker.js",G={deflate:[_,"deflate.js"],inflate:[_,"inflate.js"]},Y={pool:[],pendingRequests:[]};function J(t,e){const n=Y.pool,s=!(e.inputCompressed||e.inputSigned||e.inputEncrypted||e.outputCompressed||e.outputSigned||e.outputEncrypted);let i;if(t.useWebWorkers&&!s){const n=e.codecType;if(null!=t.workerScripts&&null!=t.workerScriptsPath)throw new Error("Either workerScripts or workerScriptsPath may be set, not both");if(t.workerScripts){if(i=t.workerScripts[n],!Array.isArray(i))throw new Error("workerScripts."+n+" must be an array");r=i,i="undefined"!=typeof document?r.map((t=>new URL(t,document.baseURI).href)):r}else i=G[n].slice(0),i[0]=(t.workerScriptsPath||"")+i[0]}var r;if(n.length<t.maxWorkers){const t={worker:i&&new Worker(i[0]),busy:!0,options:e,scripts:i};return n.push(t),i?function(t){const e=t.worker,n=t.scripts.slice(1);let s;return e.addEventListener(X,a,!1),t.interface={append:async t=>i({type:N,data:t}),flush:async()=>i({type:K})},t.interface;async function i(e){return s||await r(Object.assign({type:O,options:t.options,scripts:n})),r(e)}function r(t){try{if(t.data)try{e.postMessage(t,[t.data.buffer])}catch(n){e.postMessage(t)}else e.postMessage(t)}catch(t){s.reject(t),e.removeEventListener(X,a,!1)}return new Promise(((t,e)=>s={resolve:t,reject:e}))}function a(n){const i=n.data;if(s){const n=i.error;if(n){const t=new Error(n.message);t.stack=n.stack,s.reject(t),e.removeEventListener(X,a,!1)}else i.type!=O&&i.type!=K&&i.type!=N||(i.type==K?(s.resolve({data:new Uint8Array(i.data),signature:i.signature}),s=null,function(t){if(t.busy=!1,Y.pendingRequests.length){const[{resolve:e,options:n,scripts:s}]=Y.pendingRequests.splice(0,1);t.busy=!0,t.options=n,t.scripts=s,e(t.interface)}else t.worker.terminate(),Y.pool=Y.pool.filter((e=>e!=t))}(t)):s.resolve(i.data&&new Uint8Array(i.data)))}}}(t):Q(t)}{const t=n.find((t=>!t.busy));return t?(t.busy=!0,t.options=e,t.scripts=i,i?t.interface:Q(t)):new Promise((t=>Y.pendingRequests.push({resolve:t,options:e,scripts:i})))}}async function Q(t){const e=(n=t.options).codecType.startsWith(P)?new H(n):n.codecType.startsWith(W)?new V(n):void 0;var n;const s=e.flush.bind(e);return e.flush=async()=>{const e=await s();if(t.busy=!1,Y.pendingRequests.length){const[{resolve:e,options:n}]=Y.pendingRequests.splice(0,1);t.busy=!0,t.options=n,e(await Q(t))}else Y.pool=Y.pool.filter((e=>e!=t));return e},e}async function $(t,e,n,s,i,r,a){const o=Math.max(r.chunkSize,64);return async function r(d=0,c=0){const p=d*o;if(p<i){const l=await e.readUint8Array(p+s,Math.min(o,i-p)),m=await t.append(l);return c+=await tt(n,m),a.onprogress&&a.onprogress(p+l.length,i),r(d+1,c)}{const e=await t.flush();return c+=await tt(n,e.data),{signature:e.signature,length:c}}}()}async function tt(t,e){return e.length&&await t.writeUint8Array(e),e.length}const et="File format is not recognized",nt="End of central directory not found",st="Zip64 extra field not found",it="Encryption not supported",rt="Compression method not supported",at="utf-8",ot="windows-1252";class dt{constructor(t,e,n){this.reader=t,this.config=e,this.options=n}async getData(t,e={}){const n=this.reader;n.initialized||await n.init();const s=await n.readUint8Array(this.offset,30),i=new DataView(s.buffer),r=void 0===e.password?this.options.password:e.password;let a=r&&r.length&&r;if(1347093252!=i.getUint32(0,!1))throw"Local file header not found";const o=this.localDirectory={};ct(o,i,4),o.rawExtraField=s.subarray(this.offset+30+o.filenameLength,this.offset+30+o.filenameLength+o.extraFieldLength),pt(this,o,i,4);let d=this.offset+30+o.filenameLength+o.extraFieldLength;const c=this.bitFlag.encrypted&&o.bitFlag.encrypted;if(c&&!a)throw new Error("File contains encrypted entry");const p=await J(this.config,{codecType:W,inputPassword:a,inputSigned:void 0===e.checkSignature?this.options.checkSignature:e.checkSignature,inputSignature:this.signature,inputCompressed:0!=this.compressionMethod,inputEncrypted:c});return t.initialized||await t.init(),await $(p,n,t,d,this.compressedSize,this.config,{onprogress:e.onprogress}),t.getData()}}function ct(t,e,n){t.version=e.getUint16(n,!0);const s=t.rawBitFlag=e.getUint16(n+2,!0);t.bitFlag={encrypted:1==(1&s),level:(6&s)>>1,dataDescriptor:8==(8&s),languageEncodingFlag:2048==(2048&s)},t.rawLastModDate=e.getUint32(n+6,!0),t.lastModDate=function(t){const e=(4294901760&t)>>16,n=65535&t;try{return new Date(1980+((65024&e)>>9),((480&e)>>5)-1,31&e,(63488&n)>>11,(2016&n)>>5,2*(31&n),0)}catch(t){}}(t.rawLastModDate),t.filenameLength=e.getUint16(n+22,!0),t.extraFieldLength=e.getUint16(n+24,!0)}function pt(t,e,n,s){let i,r,a;const o=e.rawExtraField,d=e.extraField=new Map,c=new DataView(new Uint8Array(o).buffer);let p=0;try{for(;p<o.length;){const t=c.getUint16(p,!0),e=c.getUint16(p+2,!0);d.set(t,{type:t,data:o.slice(p+4,p+4+e)}),p+=4+e}}catch(t){}const l=n.getUint16(s+4,!0);e.signature=n.getUint32(s+10,!0),e.uncompressedSize=n.getUint32(s+18,!0),e.compressedSize=n.getUint32(s+14,!0),i=e.extraFieldZip64=d.get(1),i&&function(t,e){e.zip64=!0;const n=new DataView(t.data.buffer);t.values=[];for(let e=0;e<Math.floor(t.data.length/8);e++)t.values.push(Number(n.getBigUint64(0+8*e,!0)));const s=["uncompressedSize","compressedSize","offset"],i=s.filter((t=>4294967295==e[t]));for(let e=0;e<i.length;e++)t[i[e]]=t.values[e];s.forEach((n=>{if(4294967295==e[n]){if(!t||void 0===t[n])throw new Error(st);e[n]=t&&t[n]}}))}(i,e),a=e.extraFieldUnicodePath=d.get(28789),a&&function(t,e,n){const s=new DataView(t.data.buffer);t.version=s.getUint8(0),t.signature=s.getUint32(1,!0);const i=new x;i.append(n.rawFilename);const r=new DataView(new Uint8Array(4).buffer);r.setUint32(0,i.get()),t.filename=(new TextDecoder).decode(t.data.subarray(5)),t.signature==r.getUint32(0,!1)&&(e.filename=t.filename)}(a,e,t),r=e.extraFieldAES=d.get(39169),r?function(t,e,n){if(t){if(99!=n)throw new Error(rt);const s=new DataView(t.data.buffer);t.vendorVersion=s.getUint8(0),t.vendorId=s.getUint8(2);const i=s.getUint8(4);if(t.compressionMethod=s.getUint16(5,!0),3!=i)throw new Error(it);e.compressionMethod=t.compressionMethod}else e.compressionMethod=n}(r,e,l):e.compressionMethod=l,8==e.compressionMethod&&(e.bitFlag.enhancedDeflating=16!=(16&e.rawBitFlag))}function lt(t,e){return new TextDecoder(e).decode(t)}function mt(t){return unescape(encodeURIComponent(t))}function ht(t){const e=[];for(let n=0;n<t.length;n++)e.push(t.charCodeAt(n));return e}const ft="function";function ut(t,e){return class{constructor(n){const s=t=>{if(this.pendingData){const e=this.pendingData;this.pendingData=new Uint8Array(e.length+t.length),this.pendingData.set(e,0),this.pendingData.set(t,e.length)}else this.pendingData=new Uint8Array(t)};if(this.codec=new t(Object.assign({},e,n)),typeof this.codec.onData==ft)this.codec.onData=s;else{if(typeof this.codec.on!=ft)throw new Error("Cannot register the callback function");this.codec.on("data",s)}}async append(t){return this.codec.push(t),n(this)}async flush(){return this.codec.push(new Uint8Array(0),!0),n(this)}};function n(t){if(t.pendingData){const e=t.pendingData;return t.pendingData=null,e}return new Uint8Array(0)}}const xt={chunkSize:524288,maxWorkers:"undefined"!=typeof navigator&&navigator.hardwareConcurrency||2,workerScriptsPath:void 0,useWebWorkers:!0};let vt=Object.assign({},xt);class gt extends class{constructor(t,e={},n={}){this.reader=t,this.options=e,this.config=n}async getEntries(){const t=this.reader;t.initialized||await t.init();const e=await async function(t,e,n,s){if(t.size<n)throw new Error(et);const i=n+s;let r=n,a=await o(r);a||(a=await o(Math.min(i,t.size)));if(!a)throw new Error(nt);return a;async function o(s){const i=t.size-s,r=await t.readUint8Array(i,s);for(let t=r.length-n;t>=0;t--)if(r[t]==e[0]&&r[t+1]==e[1]&&r[t+2]==e[2]&&r[t+3]==e[3])return{offset:i,buffer:r.slice(t,t+n).buffer}}}(t,[80,75,5,6],22,65536);let n,s=new DataView(e.buffer),i=s.getUint32(16,!0),r=s.getUint16(8,!0);if(4294967295==i||65535==r){n=!0;const s=await t.readUint8Array(e.offset-20,20),a=new DataView(s.buffer);if(1347094023!=Number(a.getUint32(0,!1)))throw new Error("End of Zip64 central directory not found");i=Number(a.getBigUint64(8,!0));const o=await t.readUint8Array(i,56),d=new DataView(o.buffer);if(1347094022!=Number(d.getUint32(0,!1)))throw new Error("End of Zip64 central directory locator not found");r=Number(d.getBigUint64(24,!0)),i-=Number(d.getBigUint64(40,!0))}if(i<0||!n&&(i>=t.size||r>=65535))throw new Error(et);const a=await t.readUint8Array(i,t.size-i);s=new DataView(a.buffer);const o=[];let d=0;for(let t=0;t<r;t++){const t=new dt(this.reader,this.config,this.options);if(1347092738!=s.getUint32(d,!1))throw new Error("Central directory header not found");if(t.compressedSize=0,t.uncompressedSize=0,ct(t,s,d+6),t.commentLength=s.getUint16(d+32,!0),t.directory=16==(16&s.getUint8(d+38)),t.offset=s.getUint32(d+42,!0),t.rawFilename=a.subarray(d+46,d+46+t.filenameLength),t.filename=lt(t.rawFilename,t.bitFlag.languageEncodingFlag?at:this.options.filenameEncoding||ot),t.directory||"/"!=t.filename.charAt(t.filename.length-1)||(t.directory=!0),t.rawExtraField=a.subarray(d+46+t.filenameLength,d+46+t.filenameLength+t.extraFieldLength),pt(t,t,s,d+6),0!=t.compressionMethod&&8!=t.compressionMethod)throw new Error(rt);t.rawComment=a.subarray(d+46+t.filenameLength+t.extraFieldLength,d+46+t.filenameLength+t.extraFieldLength+t.commentLength),t.comment=lt(t.rawComment,t.bitFlag.languageEncodingFlag?at:this.options.commentEncoding||ot),o.push(t),d+=46+t.filenameLength+t.extraFieldLength+t.commentLength}return o}async close(){}}{constructor(t,e){super(t,e,vt)}}class wt extends class{constructor(t,e={},n={}){this.writer=t,this.options=e,this.config=n,this.files=new Map,this.offset=t.size,this.zip64=e.zip64}async add(t,e,n={}){if(t=t.trim(),n.directory&&"/"!=t.charAt(t.length-1)&&(t+="/"),this.files.has(t))throw new Error("File already exists");if(n.comment=ht(mt(n.comment||"")),n.comment>65536)throw new Error("File entry comment exceeds 64KB");n.zip64=n.zip64||this.zip64,await async function(t,e,n,s){const i=t.files,r=t.writer;let a;i.set(e,null);try{let o,d;try{s.bufferedWrite||t.options.bufferedWrite||t.lockWrite?(o=new f,o.init()):(t.lockWrite=new Promise((t=>a=t)),r.initialized||await r.init(),o=r),(t.offset>=4294967295||n&&(n.size>=4294967295||t.offset+n.size>=4294967295))&&(s.zip64=!0),d=await async function(t,e,n,s,i,r){const a=ht(mt(t)),o=r.lastModDate||new Date,d=new Uint8Array(26),c=new DataView(d.buffer),p=void 0===r.password?i.password:r.password,l=p&&p.length&&p,m=void 0===r.level?i.level:r.level,h=0!==m&&!r.directory,f=void 0===p||!p.length,u=r.zip64,x={zip64:u,headerArray:d,directory:r.directory,filename:a,comment:r.comment,extraFieldZip64:u?new Uint8Array(28):new Uint8Array(0),extraFieldAES:l?new Uint8Array([1,153,7,0,2,0,65,69,3,0,0]):new Uint8Array(0),rawExtraField:new Uint8Array(0)},v=r.extraField;if(v){let t=4,e=0;v.forEach((e=>t+=e.length));const n=x.rawExtraField=new Uint8Array(t);v.forEach(((t,s)=>{n.set(new Uint16Array([s]),e),n.set(new Uint16Array([t.length]),e+2),n.set(t,e+4),e+=4+t.length}))}r.bitFlag=8,r.version=(void 0===r.version?i.version:r.version)||20,r.compressionMethod=0,h&&(r.compressionMethod=8);u&&(r.version=r.version>45?r.version:45);l&&(r.version=r.version>51?r.version:51,r.bitFlag=9,r.compressionMethod=99,h&&(x.extraFieldAES[9]=8));c.setUint16(0,r.version,!0),c.setUint16(2,r.bitFlag,!0),c.setUint16(4,r.compressionMethod,!0),c.setUint16(6,(o.getHours()<<6|o.getMinutes())<<5|o.getSeconds()/2,!0),c.setUint16(8,(o.getFullYear()-1980<<4|o.getMonth()+1)<<5|o.getDate(),!0),c.setUint16(22,a.length,!0),c.setUint16(24,0,!0);const g=new Uint8Array(30+a.length);let w;if(new DataView(g.buffer).setUint32(0,1347093252),g.set(d,4),g.set(a,30),e){e.initialized||await e.init();const t=await J(s,{codecType:P,level:m,outputPassword:p,outputSigned:f,outputCompressed:h,outputEncrypted:Boolean(p)});await n.writeUint8Array(g),w=await $(t,e,n,0,e.size,s,{onprogress:r.onprogress}),x.compressedSize=w.length}else await n.writeUint8Array(g);const y=new Uint8Array(u?24:16),b=new DataView(y.buffer);if(b.setUint32(0,1347094280),e)if(l||void 0===w.signature||(c.setUint32(10,w.signature,!0),b.setUint32(4,w.signature,!0)),u){c.setUint32(14,4294967295,!0),b.setBigUint64(8,BigInt(x.compressedSize),!0),c.setUint32(18,4294967295,!0),b.setBigUint64(16,BigInt(e.size),!0);const t=new DataView(x.extraFieldZip64.buffer);t.setUint16(0,1,!0),t.setUint16(2,24,!0),t.setBigUint64(4,BigInt(e.size),!0),t.setBigUint64(12,BigInt(x.compressedSize),!0)}else c.setUint32(14,x.compressedSize,!0),b.setUint32(8,x.compressedSize,!0),c.setUint32(18,e.size,!0),b.setUint32(12,e.size,!0);return await n.writeUint8Array(y),x.length=g.length+(w?w.length:0)+y.length,x}(e,n,o,t.config,t.options,s)}catch(t){throw i.delete(e),t}if(i.set(e,d),o!=r&&(t.lockWrite&&await t.lockWrite,await r.writeUint8Array(o.getData())),d.offset=t.offset,d.zip64){new DataView(d.extraFieldZip64.buffer).setBigUint64(20,BigInt(d.offset),!0)}t.offset+=d.length}finally{a&&(t.lockWrite=null,a())}}(this,t,e,n)}async close(t){const e=this.writer,n=this.files;let s=0,i=0,r=this.offset,a=n.size;for(const[,t]of n)i+=46+t.filename.length+t.comment.length+t.extraFieldZip64.length+t.extraFieldAES.length+t.rawExtraField.length;(r+i>=4294967295||a>=65535)&&(this.zip64=!0);const o=new Uint8Array(i+(this.zip64?98:22)),d=new DataView(o.buffer);for(const[,t]of n){const e=t.filename,n=t.extraFieldZip64,i=t.extraFieldAES,r=n.length+i.length+t.rawExtraField.length;d.setUint32(s,1347092738),t.zip64?d.setUint16(s+4,11520):d.setUint16(s+4,5120),o.set(t.headerArray,s+6),d.setUint16(s+30,r,!0),d.setUint16(s+32,t.comment.length,!0),t.directory&&d.setUint8(s+38,16),t.zip64?d.setUint32(s+42,4294967295,!0):d.setUint32(s+42,t.offset,!0),o.set(e,s+46),o.set(n,s+46+e.length),o.set(i,s+46+e.length+n.length),o.set(t.rawExtraField,46+e.length+n.length+i.length),o.set(t.comment,s+46+e.length+r),s+=46+e.length+r+t.comment.length}if(this.zip64&&(d.setUint32(s,1347094022),d.setBigUint64(s+4,BigInt(44),!0),d.setUint16(s+12,45,!0),d.setUint16(s+14,45,!0),d.setBigUint64(s+24,BigInt(a),!0),d.setBigUint64(s+32,BigInt(a),!0),d.setBigUint64(s+40,BigInt(i),!0),d.setBigUint64(s+48,BigInt(r),!0),d.setUint32(s+56,1347094023),d.setBigUint64(s+64,BigInt(r+i),!0),d.setUint32(s+72,1,!0),a=65535,r=4294967295,s+=76),d.setUint32(s,1347093766),d.setUint16(s+8,a,!0),d.setUint16(s+10,a,!0),d.setUint32(s+12,i,!0),d.setUint32(s+16,r,!0),t&&t.length){if(!(t.length<=65536))throw new Error("Zip file comment exceeds 64KB");d.setUint16(s+20,t.length,!0)}return await e.writeUint8Array(o),t&&t.length&&await e.writeUint8Array(t),e.getData()}}{constructor(t,e){super(t,e,vt)}}const yt=524288;class bt{constructor(t,e,n,s){if(t.root&&s&&s.getChildByName(e))throw new Error("Entry filename already exists");n||(n={}),this.fs=t,this.name=e,this.id=t.entries.length,this.parent=s,this.children=[],this.zipVersion=n.zipVersion||20,this.uncompressedSize=0,t.entries.push(this),s&&this.parent.children.push(this)}moveTo(t){if(!t.directory)throw"Target entry is not a directory";if(t.isDescendantOf(this))throw"Entry is a ancestor of target entry";if(this!=t){if(t.getChildByName(this.name))throw"Entry filename already exists";Dt(this),this.parent=t,t.children.push(this)}}getFullname(){let t=this.name,e=this.parent;for(;e;)t=(e.name?e.name+"/":"")+t,e=e.parent;return t}isDescendantOf(t){let e=this.parent;for(;e&&e.id!=t.id;)e=e.parent;return Boolean(e)}}class kt extends bt{constructor(t,e,n,s){super(t,e,n,s),this.Reader=n.Reader,this.Writer=n.Writer,this.data=n.data,n.getData&&(this.getData=n.getData)}async getData(t,e={}){return!t||t.constructor==this.Writer&&this.data?this.data:(this.reader||(this.reader=new this.Reader(this.data)),await this.reader.init(),await t.init(),this.uncompressedSize=this.reader.size,async function(t,e,n){return s();async function s(i=0){const r=i*yt;if(n.onprogress&&n.onprogress(r,t.size),r<t.size){const n=await t.readUint8Array(r,Math.min(yt,t.size-r));return await e.writeUint8Array(n),s(i+1)}return e.getData()}}(this.reader,t,e))}getText(t,e){return this.getData(new o(t),e)}getBlob(t,e){return this.getData(new l(t),e)}getData64URI(t,e){return this.getData(new c(t),e)}}class zt extends bt{constructor(t,e,n,s){super(t,e,n,s),this.directory=!0}addDirectory(t){return Bt(this,t,null,!0)}addText(t,e){return Bt(this,t,{data:e,Reader:a,Writer:o})}addBlob(t,e){return Bt(this,t,{data:e,Reader:p,Writer:l})}addData64URI(t,e){return Bt(this,t,{data:e,Reader:d,Writer:c})}addHttpContent(t,e,n={}){return Bt(this,t,{data:e,Reader:n.useRangeHeader?h:m})}addFileEntry(t){!async function(t,e){e.isDirectory?await s(t,e):await new Promise(((n,s)=>{e.file((s=>{t.addBlob(e.name,s),n()}),s)}));function n(t){return new Promise(((e,n)=>{let s=[];function i(t){t.readEntries((n=>{n.length?(s=s.concat(n),i(t)):e(s)}),n)}t.isDirectory&&i(t.createReader()),t.isFile&&e(s)}))}async function s(t,e){const i=await n(e);for(const e of i)e.isDirectory&&await s(t.addDirectory(e.name)),await new Promise(((n,s)=>{e.isFile&&e.file((s=>{const i=t.addBlob(e.name,s);i.uncompressedSize=s.size,n(i)}),s)}))}}(this,t)}async addData(t,e){return Bt(this,t,e)}async importBlob(t,e={}){await this.importZip(new p(t),e)}async importData64URI(t,e={}){await this.importZip(new d(t),e)}async importHttpContent(t,e={}){await this.importZip(e.useRangeHeader?new h(t):new m(t),e)}async exportBlob(t={}){return this.exportZip(new l("application/zip"),t)}async exportData64URI(t={}){return this.exportZip(new c("application/zip"),t)}async importZip(t,e){await t.init();const n=new gt(t),s=await n.getEntries();let i=0;const r=At(s,"compressedSize");s.forEach((t=>{let n=this,s=t.filename.split("/"),a=s.pop();if(s.forEach((t=>n=n.getChildByName(t)||new zt(this.fs,t,null,n))),!t.directory){let s=i;Bt(n,a,{data:t,Reader:jt(Object.assign({},e,{onprogress:t=>{e.onprogress&&e.onprogress(s+t,r)}}))}),i+=t.compressedSize}}))}async exportZip(t,e){await Et(this);const n=new wt(t);return await async function(t,e,n,s){let i=0;async function r(t,e){async function a(){let a=0;for(const o of e.children){let e=i;await t.add(o.getFullname(),o.reader,Object.assign({directory:o.directory,version:o.zipVersion},s,{onprogress:t=>{s.onprogress&&s.onprogress(e+a+t,n)}})),i+=o.uncompressedSize,await r(t,o),a++}}await a()}await r(t,e)}(n,this,At([this],"uncompressedSize"),e),await n.close(),t.getData()}getChildByName(t){for(let e=0;e<this.children.length;e++){const n=this.children[e];if(n.name==t)return n}}}const Ut={FS:class{constructor(){Rt(this)}remove(t){Dt(t),this.entries[t.id]=null}find(t){const e=t.split("/");let n=this.root;for(let t=0;n&&t<e.length;t++)n=n.getChildByName(e[t]);return n}getById(t){return this.entries[t]}async importBlob(t){Rt(this),await this.root.importBlob(t)}async importData64URI(t){Rt(this),await this.root.importData64URI(t)}async importHttpContent(t,e){this.entries=[],this.root=new zt(this),await this.root.importHttpContent(t,e)}async exportBlob(t){return this.root.exportBlob(t)}async exportData64URI(t){return this.root.exportData64URI(t)}},ZipDirectoryEntry:zt,ZipFileEntry:kt};function At(t,e){let n=0;return t.forEach((function t(s){n+=s[e],s.children&&s.children.forEach(t)})),n}function jt(t){return class{constructor(t){this.entry=t,this.size=0}async readUint8Array(e,n){if(!this.blobReader){const e=await this.entry.getData(new l,t);this.data=e,this.blobReader=new p(e)}return this.blobReader.readUint8Array(e,n)}async init(){this.size=this.entry.uncompressedSize}}}async function Et(t){if(t.children.length)for(const e of t.children)e.directory?await Et(e):(e.reader=new e.Reader(e.data),await e.reader.init(),e.uncompressedSize=e.reader.size)}function Dt(t){const e=t.parent.children;e.forEach(((n,s)=>{n.id==t.id&&e.splice(s,1)}))}function Rt(t){t.entries=[],t.root=new zt(t)}function Bt(t,e,n,s){if(t.directory)return s?new zt(t.fs,e,n,t):new kt(t.fs,e,n,t);throw"Parent entry is not a directory"}const Ft={application:{"andrew-inset":"ez",annodex:"anx","atom+xml":"atom","atomcat+xml":"atomcat","atomserv+xml":"atomsrv",bbolin:"lin",cap:["cap","pcap"],"cu-seeme":"cu","davmount+xml":"davmount",dsptype:"tsp",ecmascript:["es","ecma"],futuresplash:"spl",hta:"hta","java-archive":"jar","java-serialized-object":"ser","java-vm":"class",javascript:"js",m3g:"m3g","mac-binhex40":"hqx",mathematica:["nb","ma","mb"],msaccess:"mdb",msword:["doc","dot"],mxf:"mxf",oda:"oda",ogg:"ogx",pdf:"pdf","pgp-keys":"key","pgp-signature":["asc","sig"],"pics-rules":"prf",postscript:["ps","ai","eps","epsi","epsf","eps2","eps3"],rar:"rar","rdf+xml":"rdf","rss+xml":"rss",rtf:"rtf",smil:["smi","smil"],"xhtml+xml":["xhtml","xht"],xml:["xml","xsl","xsd"],"xspf+xml":"xspf",zip:"zip","vnd.android.package-archive":"apk","vnd.cinderella":"cdy","vnd.google-earth.kml+xml":"kml","vnd.google-earth.kmz":"kmz","vnd.mozilla.xul+xml":"xul","vnd.ms-excel":["xls","xlb","xlt","xlm","xla","xlc","xlw"],"vnd.ms-pki.seccat":"cat","vnd.ms-pki.stl":"stl","vnd.ms-powerpoint":["ppt","pps","pot"],"vnd.oasis.opendocument.chart":"odc","vnd.oasis.opendocument.database":"odb","vnd.oasis.opendocument.formula":"odf","vnd.oasis.opendocument.graphics":"odg","vnd.oasis.opendocument.graphics-template":"otg","vnd.oasis.opendocument.image":"odi","vnd.oasis.opendocument.presentation":"odp","vnd.oasis.opendocument.presentation-template":"otp","vnd.oasis.opendocument.spreadsheet":"ods","vnd.oasis.opendocument.spreadsheet-template":"ots","vnd.oasis.opendocument.text":"odt","vnd.oasis.opendocument.text-master":"odm","vnd.oasis.opendocument.text-template":"ott","vnd.oasis.opendocument.text-web":"oth","vnd.openxmlformats-officedocument.spreadsheetml.sheet":"xlsx","vnd.openxmlformats-officedocument.spreadsheetml.template":"xltx","vnd.openxmlformats-officedocument.presentationml.presentation":"pptx","vnd.openxmlformats-officedocument.presentationml.slideshow":"ppsx","vnd.openxmlformats-officedocument.presentationml.template":"potx","vnd.openxmlformats-officedocument.wordprocessingml.document":"docx","vnd.openxmlformats-officedocument.wordprocessingml.template":"dotx","vnd.smaf":"mmf","vnd.stardivision.calc":"sdc","vnd.stardivision.chart":"sds","vnd.stardivision.draw":"sda","vnd.stardivision.impress":"sdd","vnd.stardivision.math":["sdf","smf"],"vnd.stardivision.writer":["sdw","vor"],"vnd.stardivision.writer-global":"sgl","vnd.sun.xml.calc":"sxc","vnd.sun.xml.calc.template":"stc","vnd.sun.xml.draw":"sxd","vnd.sun.xml.draw.template":"std","vnd.sun.xml.impress":"sxi","vnd.sun.xml.impress.template":"sti","vnd.sun.xml.math":"sxm","vnd.sun.xml.writer":"sxw","vnd.sun.xml.writer.global":"sxg","vnd.sun.xml.writer.template":"stw","vnd.symbian.install":["sis","sisx"],"vnd.visio":["vsd","vst","vss","vsw"],"vnd.wap.wbxml":"wbxml","vnd.wap.wmlc":"wmlc","vnd.wap.wmlscriptc":"wmlsc","vnd.wordperfect":"wpd","vnd.wordperfect5.1":"wp5","x-123":"wk","x-7z-compressed":"7z","x-abiword":"abw","x-apple-diskimage":"dmg","x-bcpio":"bcpio","x-bittorrent":"torrent","x-cbr":["cbr","cba","cbt","cb7"],"x-cbz":"cbz","x-cdf":["cdf","cda"],"x-cdlink":"vcd","x-chess-pgn":"pgn","x-cpio":"cpio","x-csh":"csh","x-debian-package":["deb","udeb"],"x-director":["dcr","dir","dxr","cst","cct","cxt","w3d","fgd","swa"],"x-dms":"dms","x-doom":"wad","x-dvi":"dvi","x-httpd-eruby":"rhtml","x-font":"pcf.Z","x-freemind":"mm","x-gnumeric":"gnumeric","x-go-sgf":"sgf","x-graphing-calculator":"gcf","x-gtar":["gtar","taz"],"x-hdf":"hdf","x-httpd-php":["phtml","pht","php"],"x-httpd-php-source":"phps","x-httpd-php3":"php3","x-httpd-php3-preprocessed":"php3p","x-httpd-php4":"php4","x-httpd-php5":"php5","x-ica":"ica","x-info":"info","x-internet-signup":["ins","isp"],"x-iphone":"iii","x-iso9660-image":"iso","x-java-jnlp-file":"jnlp","x-jmol":"jmz","x-killustrator":"kil","x-koan":["skp","skd","skt","skm"],"x-kpresenter":["kpr","kpt"],"x-kword":["kwd","kwt"],"x-latex":"latex","x-lha":"lha","x-lyx":"lyx","x-lzh":"lzh","x-lzx":"lzx","x-maker":["frm","maker","frame","fm","fb","book","fbdoc"],"x-ms-wmd":"wmd","x-ms-wmz":"wmz","x-msdos-program":["com","exe","bat","dll"],"x-msi":"msi","x-netcdf":["nc","cdf"],"x-ns-proxy-autoconfig":["pac","dat"],"x-nwc":"nwc","x-object":"o","x-oz-application":"oza","x-pkcs7-certreqresp":"p7r","x-python-code":["pyc","pyo"],"x-qgis":["qgs","shp","shx"],"x-quicktimeplayer":"qtl","x-redhat-package-manager":"rpm","x-ruby":"rb","x-sh":"sh","x-shar":"shar","x-shockwave-flash":["swf","swfl"],"x-silverlight":"scr","x-stuffit":"sit","x-sv4cpio":"sv4cpio","x-sv4crc":"sv4crc","x-tar":"tar","x-tcl":"tcl","x-tex-gf":"gf","x-tex-pk":"pk","x-texinfo":["texinfo","texi"],"x-trash":["~","%","bak","old","sik"],"x-troff":["t","tr","roff"],"x-troff-man":"man","x-troff-me":"me","x-troff-ms":"ms","x-ustar":"ustar","x-wais-source":"src","x-wingz":"wz","x-x509-ca-cert":["crt","der","cer"],"x-xcf":"xcf","x-xfig":"fig","x-xpinstall":"xpi",applixware:"aw","atomsvc+xml":"atomsvc","ccxml+xml":"ccxml","cdmi-capability":"cdmia","cdmi-container":"cdmic","cdmi-domain":"cdmid","cdmi-object":"cdmio","cdmi-queue":"cdmiq","docbook+xml":"dbk","dssc+der":"dssc","dssc+xml":"xdssc","emma+xml":"emma","epub+zip":"epub",exi:"exi","font-tdpfr":"pfr","gml+xml":"gml","gpx+xml":"gpx",gxf:"gxf",hyperstudio:"stk","inkml+xml":["ink","inkml"],ipfix:"ipfix",json:"json","jsonml+json":"jsonml","lost+xml":"lostxml","mads+xml":"mads",marc:"mrc","marcxml+xml":"mrcx","mathml+xml":"mathml",mbox:"mbox","mediaservercontrol+xml":"mscml","metalink+xml":"metalink","metalink4+xml":"meta4","mets+xml":"mets","mods+xml":"mods",mp21:["m21","mp21"],mp4:"mp4s","oebps-package+xml":"opf","omdoc+xml":"omdoc",onenote:["onetoc","onetoc2","onetmp","onepkg"],oxps:"oxps","patch-ops-error+xml":"xer","pgp-encrypted":"pgp",pkcs10:"p10","pkcs7-mime":["p7m","p7c"],"pkcs7-signature":"p7s",pkcs8:"p8","pkix-attr-cert":"ac","pkix-crl":"crl","pkix-pkipath":"pkipath",pkixcmp:"pki","pls+xml":"pls","prs.cww":"cww","pskc+xml":"pskcxml","reginfo+xml":"rif","relax-ng-compact-syntax":"rnc","resource-lists+xml":"rl","resource-lists-diff+xml":"rld","rls-services+xml":"rs","rpki-ghostbusters":"gbr","rpki-manifest":"mft","rpki-roa":"roa","rsd+xml":"rsd","sbml+xml":"sbml","scvp-cv-request":"scq","scvp-cv-response":"scs","scvp-vp-request":"spq","scvp-vp-response":"spp",sdp:"sdp","set-payment-initiation":"setpay","set-registration-initiation":"setreg","shf+xml":"shf","sparql-query":"rq","sparql-results+xml":"srx",srgs:"gram","srgs+xml":"grxml","sru+xml":"sru","ssdl+xml":"ssdl","ssml+xml":"ssml","tei+xml":["tei","teicorpus"],"thraud+xml":"tfi","timestamped-data":"tsd","vnd.3gpp.pic-bw-large":"plb","vnd.3gpp.pic-bw-small":"psb","vnd.3gpp.pic-bw-var":"pvb","vnd.3gpp2.tcap":"tcap","vnd.3m.post-it-notes":"pwn","vnd.accpac.simply.aso":"aso","vnd.accpac.simply.imp":"imp","vnd.acucobol":"acu","vnd.acucorp":["atc","acutc"],"vnd.adobe.air-application-installer-package+zip":"air","vnd.adobe.formscentral.fcdt":"fcdt","vnd.adobe.fxp":["fxp","fxpl"],"vnd.adobe.xdp+xml":"xdp","vnd.adobe.xfdf":"xfdf","vnd.ahead.space":"ahead","vnd.airzip.filesecure.azf":"azf","vnd.airzip.filesecure.azs":"azs","vnd.amazon.ebook":"azw","vnd.americandynamics.acc":"acc","vnd.amiga.ami":"ami","vnd.anser-web-certificate-issue-initiation":"cii","vnd.anser-web-funds-transfer-initiation":"fti","vnd.antix.game-component":"atx","vnd.apple.installer+xml":"mpkg","vnd.apple.mpegurl":"m3u8","vnd.aristanetworks.swi":"swi","vnd.astraea-software.iota":"iota","vnd.audiograph":"aep","vnd.blueice.multipass":"mpm","vnd.bmi":"bmi","vnd.businessobjects":"rep","vnd.chemdraw+xml":"cdxml","vnd.chipnuts.karaoke-mmd":"mmd","vnd.claymore":"cla","vnd.cloanto.rp9":"rp9","vnd.clonk.c4group":["c4g","c4d","c4f","c4p","c4u"],"vnd.cluetrust.cartomobile-config":"c11amc","vnd.cluetrust.cartomobile-config-pkg":"c11amz","vnd.commonspace":"csp","vnd.contact.cmsg":"cdbcmsg","vnd.cosmocaller":"cmc","vnd.crick.clicker":"clkx","vnd.crick.clicker.keyboard":"clkk","vnd.crick.clicker.palette":"clkp","vnd.crick.clicker.template":"clkt","vnd.crick.clicker.wordbank":"clkw","vnd.criticaltools.wbs+xml":"wbs","vnd.ctc-posml":"pml","vnd.cups-ppd":"ppd","vnd.curl.car":"car","vnd.curl.pcurl":"pcurl","vnd.dart":"dart","vnd.data-vision.rdz":"rdz","vnd.dece.data":["uvf","uvvf","uvd","uvvd"],"vnd.dece.ttml+xml":["uvt","uvvt"],"vnd.dece.unspecified":["uvx","uvvx"],"vnd.dece.zip":["uvz","uvvz"],"vnd.denovo.fcselayout-link":"fe_launch","vnd.dna":"dna","vnd.dolby.mlp":"mlp","vnd.dpgraph":"dpg","vnd.dreamfactory":"dfac","vnd.ds-keypoint":"kpxx","vnd.dvb.ait":"ait","vnd.dvb.service":"svc","vnd.dynageo":"geo","vnd.ecowin.chart":"mag","vnd.enliven":"nml","vnd.epson.esf":"esf","vnd.epson.msf":"msf","vnd.epson.quickanime":"qam","vnd.epson.salt":"slt","vnd.epson.ssf":"ssf","vnd.eszigno3+xml":["es3","et3"],"vnd.ezpix-album":"ez2","vnd.ezpix-package":"ez3","vnd.fdf":"fdf","vnd.fdsn.mseed":"mseed","vnd.fdsn.seed":["seed","dataless"],"vnd.flographit":"gph","vnd.fluxtime.clip":"ftc","vnd.framemaker":["fm","frame","maker","book"],"vnd.frogans.fnc":"fnc","vnd.frogans.ltf":"ltf","vnd.fsc.weblaunch":"fsc","vnd.fujitsu.oasys":"oas","vnd.fujitsu.oasys2":"oa2","vnd.fujitsu.oasys3":"oa3","vnd.fujitsu.oasysgp":"fg5","vnd.fujitsu.oasysprs":"bh2","vnd.fujixerox.ddd":"ddd","vnd.fujixerox.docuworks":"xdw","vnd.fujixerox.docuworks.binder":"xbd","vnd.fuzzysheet":"fzs","vnd.genomatix.tuxedo":"txd","vnd.geogebra.file":"ggb","vnd.geogebra.tool":"ggt","vnd.geometry-explorer":["gex","gre"],"vnd.geonext":"gxt","vnd.geoplan":"g2w","vnd.geospace":"g3w","vnd.gmx":"gmx","vnd.grafeq":["gqf","gqs"],"vnd.groove-account":"gac","vnd.groove-help":"ghf","vnd.groove-identity-message":"gim","vnd.groove-injector":"grv","vnd.groove-tool-message":"gtm","vnd.groove-tool-template":"tpl","vnd.groove-vcard":"vcg","vnd.hal+xml":"hal","vnd.handheld-entertainment+xml":"zmm","vnd.hbci":"hbci","vnd.hhe.lesson-player":"les","vnd.hp-hpgl":"hpgl","vnd.hp-hpid":"hpid","vnd.hp-hps":"hps","vnd.hp-jlyt":"jlt","vnd.hp-pcl":"pcl","vnd.hp-pclxl":"pclxl","vnd.hydrostatix.sof-data":"sfd-hdstx","vnd.ibm.minipay":"mpy","vnd.ibm.modcap":["afp","listafp","list3820"],"vnd.ibm.rights-management":"irm","vnd.ibm.secure-container":"sc","vnd.iccprofile":["icc","icm"],"vnd.igloader":"igl","vnd.immervision-ivp":"ivp","vnd.immervision-ivu":"ivu","vnd.insors.igm":"igm","vnd.intercon.formnet":["xpw","xpx"],"vnd.intergeo":"i2g","vnd.intu.qbo":"qbo","vnd.intu.qfx":"qfx","vnd.ipunplugged.rcprofile":"rcprofile","vnd.irepository.package+xml":"irp","vnd.is-xpr":"xpr","vnd.isac.fcs":"fcs","vnd.jam":"jam","vnd.jcp.javame.midlet-rms":"rms","vnd.jisp":"jisp","vnd.joost.joda-archive":"joda","vnd.kahootz":["ktz","ktr"],"vnd.kde.karbon":"karbon","vnd.kde.kchart":"chrt","vnd.kde.kformula":"kfo","vnd.kde.kivio":"flw","vnd.kde.kontour":"kon","vnd.kde.kpresenter":["kpr","kpt"],"vnd.kde.kspread":"ksp","vnd.kde.kword":["kwd","kwt"],"vnd.kenameaapp":"htke","vnd.kidspiration":"kia","vnd.kinar":["kne","knp"],"vnd.koan":["skp","skd","skt","skm"],"vnd.kodak-descriptor":"sse","vnd.las.las+xml":"lasxml","vnd.llamagraphics.life-balance.desktop":"lbd","vnd.llamagraphics.life-balance.exchange+xml":"lbe","vnd.lotus-1-2-3":"123","vnd.lotus-approach":"apr","vnd.lotus-freelance":"pre","vnd.lotus-notes":"nsf","vnd.lotus-organizer":"org","vnd.lotus-screencam":"scm","vnd.lotus-wordpro":"lwp","vnd.macports.portpkg":"portpkg","vnd.mcd":"mcd","vnd.medcalcdata":"mc1","vnd.mediastation.cdkey":"cdkey","vnd.mfer":"mwf","vnd.mfmp":"mfm","vnd.micrografx.flo":"flo","vnd.micrografx.igx":"igx","vnd.mif":"mif","vnd.mobius.daf":"daf","vnd.mobius.dis":"dis","vnd.mobius.mbk":"mbk","vnd.mobius.mqy":"mqy","vnd.mobius.msl":"msl","vnd.mobius.plc":"plc","vnd.mobius.txf":"txf","vnd.mophun.application":"mpn","vnd.mophun.certificate":"mpc","vnd.ms-artgalry":"cil","vnd.ms-cab-compressed":"cab","vnd.ms-excel.addin.macroenabled.12":"xlam","vnd.ms-excel.sheet.binary.macroenabled.12":"xlsb","vnd.ms-excel.sheet.macroenabled.12":"xlsm","vnd.ms-excel.template.macroenabled.12":"xltm","vnd.ms-fontobject":"eot","vnd.ms-htmlhelp":"chm","vnd.ms-ims":"ims","vnd.ms-lrm":"lrm","vnd.ms-officetheme":"thmx","vnd.ms-powerpoint.addin.macroenabled.12":"ppam","vnd.ms-powerpoint.presentation.macroenabled.12":"pptm","vnd.ms-powerpoint.slide.macroenabled.12":"sldm","vnd.ms-powerpoint.slideshow.macroenabled.12":"ppsm","vnd.ms-powerpoint.template.macroenabled.12":"potm","vnd.ms-project":["mpp","mpt"],"vnd.ms-word.document.macroenabled.12":"docm","vnd.ms-word.template.macroenabled.12":"dotm","vnd.ms-works":["wps","wks","wcm","wdb"],"vnd.ms-wpl":"wpl","vnd.ms-xpsdocument":"xps","vnd.mseq":"mseq","vnd.musician":"mus","vnd.muvee.style":"msty","vnd.mynfc":"taglet","vnd.neurolanguage.nlu":"nlu","vnd.nitf":["ntf","nitf"],"vnd.noblenet-directory":"nnd","vnd.noblenet-sealer":"nns","vnd.noblenet-web":"nnw","vnd.nokia.n-gage.data":"ngdat","vnd.nokia.n-gage.symbian.install":"n-gage","vnd.nokia.radio-preset":"rpst","vnd.nokia.radio-presets":"rpss","vnd.novadigm.edm":"edm","vnd.novadigm.edx":"edx","vnd.novadigm.ext":"ext","vnd.oasis.opendocument.chart-template":"otc","vnd.oasis.opendocument.formula-template":"odft","vnd.oasis.opendocument.image-template":"oti","vnd.olpc-sugar":"xo","vnd.oma.dd2+xml":"dd2","vnd.openofficeorg.extension":"oxt","vnd.openxmlformats-officedocument.presentationml.slide":"sldx","vnd.osgeo.mapguide.package":"mgp","vnd.osgi.dp":"dp","vnd.osgi.subsystem":"esa","vnd.palm":["pdb","pqa","oprc"],"vnd.pawaafile":"paw","vnd.pg.format":"str","vnd.pg.osasli":"ei6","vnd.picsel":"efif","vnd.pmi.widget":"wg","vnd.pocketlearn":"plf","vnd.powerbuilder6":"pbd","vnd.previewsystems.box":"box","vnd.proteus.magazine":"mgz","vnd.publishare-delta-tree":"qps","vnd.pvi.ptid1":"ptid","vnd.quark.quarkxpress":["qxd","qxt","qwd","qwt","qxl","qxb"],"vnd.realvnc.bed":"bed","vnd.recordare.musicxml":"mxl","vnd.recordare.musicxml+xml":"musicxml","vnd.rig.cryptonote":"cryptonote","vnd.rn-realmedia":"rm","vnd.rn-realmedia-vbr":"rmvb","vnd.route66.link66+xml":"link66","vnd.sailingtracker.track":"st","vnd.seemail":"see","vnd.sema":"sema","vnd.semd":"semd","vnd.semf":"semf","vnd.shana.informed.formdata":"ifm","vnd.shana.informed.formtemplate":"itp","vnd.shana.informed.interchange":"iif","vnd.shana.informed.package":"ipk","vnd.simtech-mindmapper":["twd","twds"],"vnd.smart.teacher":"teacher","vnd.solent.sdkm+xml":["sdkm","sdkd"],"vnd.spotfire.dxp":"dxp","vnd.spotfire.sfs":"sfs","vnd.stepmania.package":"smzip","vnd.stepmania.stepchart":"sm","vnd.sus-calendar":["sus","susp"],"vnd.svd":"svd","vnd.syncml+xml":"xsm","vnd.syncml.dm+wbxml":"bdm","vnd.syncml.dm+xml":"xdm","vnd.tao.intent-module-archive":"tao","vnd.tcpdump.pcap":["pcap","cap","dmp"],"vnd.tmobile-livetv":"tmo","vnd.trid.tpt":"tpt","vnd.triscape.mxs":"mxs","vnd.trueapp":"tra","vnd.ufdl":["ufd","ufdl"],"vnd.uiq.theme":"utz","vnd.umajin":"umj","vnd.unity":"unityweb","vnd.uoml+xml":"uoml","vnd.vcx":"vcx","vnd.visionary":"vis","vnd.vsf":"vsf","vnd.webturbo":"wtb","vnd.wolfram.player":"nbp","vnd.wqd":"wqd","vnd.wt.stf":"stf","vnd.xara":"xar","vnd.xfdl":"xfdl","vnd.yamaha.hv-dic":"hvd","vnd.yamaha.hv-script":"hvs","vnd.yamaha.hv-voice":"hvp","vnd.yamaha.openscoreformat":"osf","vnd.yamaha.openscoreformat.osfpvg+xml":"osfpvg","vnd.yamaha.smaf-audio":"saf","vnd.yamaha.smaf-phrase":"spf","vnd.yellowriver-custom-menu":"cmp","vnd.zul":["zir","zirz"],"vnd.zzazz.deck+xml":"zaz","voicexml+xml":"vxml",widget:"wgt",winhlp:"hlp","wsdl+xml":"wsdl","wspolicy+xml":"wspolicy","x-ace-compressed":"ace","x-authorware-bin":["aab","x32","u32","vox"],"x-authorware-map":"aam","x-authorware-seg":"aas","x-blorb":["blb","blorb"],"x-bzip":"bz","x-bzip2":["bz2","boz"],"x-cfs-compressed":"cfs","x-chat":"chat","x-conference":"nsc","x-dgc-compressed":"dgc","x-dtbncx+xml":"ncx","x-dtbook+xml":"dtb","x-dtbresource+xml":"res","x-eva":"eva","x-font-bdf":"bdf","x-font-ghostscript":"gsf","x-font-linux-psf":"psf","x-font-otf":"otf","x-font-pcf":"pcf","x-font-snf":"snf","x-font-ttf":["ttf","ttc"],"x-font-type1":["pfa","pfb","pfm","afm"],"x-font-woff":"woff","x-freearc":"arc","x-gca-compressed":"gca","x-glulx":"ulx","x-gramps-xml":"gramps","x-install-instructions":"install","x-lzh-compressed":["lzh","lha"],"x-mie":"mie","x-mobipocket-ebook":["prc","mobi"],"x-ms-application":"application","x-ms-shortcut":"lnk","x-ms-xbap":"xbap","x-msbinder":"obd","x-mscardfile":"crd","x-msclip":"clp","x-msdownload":["exe","dll","com","bat","msi"],"x-msmediaview":["mvb","m13","m14"],"x-msmetafile":["wmf","wmz","emf","emz"],"x-msmoney":"mny","x-mspublisher":"pub","x-msschedule":"scd","x-msterminal":"trm","x-mswrite":"wri","x-nzb":"nzb","x-pkcs12":["p12","pfx"],"x-pkcs7-certificates":["p7b","spc"],"x-research-info-systems":"ris","x-silverlight-app":"xap","x-sql":"sql","x-stuffitx":"sitx","x-subrip":"srt","x-t3vm-image":"t3","x-tads":"gam","x-tex":"tex","x-tex-tfm":"tfm","x-tgif":"obj","x-xliff+xml":"xlf","x-xz":"xz","x-zmachine":["z1","z2","z3","z4","z5","z6","z7","z8"],"xaml+xml":"xaml","xcap-diff+xml":"xdf","xenc+xml":"xenc","xml-dtd":"dtd","xop+xml":"xop","xproc+xml":"xpl","xslt+xml":"xslt","xv+xml":["mxml","xhvml","xvml","xvm"],yang:"yang","yin+xml":"yin",envoy:"evy",fractals:"fif","internet-property-stream":"acx",olescript:"axs","vnd.ms-outlook":"msg","vnd.ms-pkicertstore":"sst","x-compress":"z","x-compressed":"tgz","x-gzip":"gz","x-perfmon":["pma","pmc","pml","pmr","pmw"],"x-pkcs7-mime":["p7c","p7m"],"ynd.ms-pkipko":"pko"},audio:{amr:"amr","amr-wb":"awb",annodex:"axa",basic:["au","snd"],flac:"flac",midi:["mid","midi","kar","rmi"],mpeg:["mpga","mpega","mp2","mp3","m4a","mp2a","m2a","m3a"],mpegurl:"m3u",ogg:["oga","ogg","spx"],"prs.sid":"sid","x-aiff":["aif","aiff","aifc"],"x-gsm":"gsm","x-ms-wma":"wma","x-ms-wax":"wax","x-pn-realaudio":"ram","x-realaudio":"ra","x-sd2":"sd2","x-wav":"wav",adpcm:"adp",mp4:"mp4a",s3m:"s3m",silk:"sil","vnd.dece.audio":["uva","uvva"],"vnd.digital-winds":"eol","vnd.dra":"dra","vnd.dts":"dts","vnd.dts.hd":"dtshd","vnd.lucent.voice":"lvp","vnd.ms-playready.media.pya":"pya","vnd.nuera.ecelp4800":"ecelp4800","vnd.nuera.ecelp7470":"ecelp7470","vnd.nuera.ecelp9600":"ecelp9600","vnd.rip":"rip",webm:"weba","x-aac":"aac","x-caf":"caf","x-matroska":"mka","x-pn-realaudio-plugin":"rmp",xm:"xm",mid:["mid","rmi"]},chemical:{"x-alchemy":"alc","x-cache":["cac","cache"],"x-cache-csf":"csf","x-cactvs-binary":["cbin","cascii","ctab"],"x-cdx":"cdx","x-chem3d":"c3d","x-cif":"cif","x-cmdf":"cmdf","x-cml":"cml","x-compass":"cpa","x-crossfire":"bsd","x-csml":["csml","csm"],"x-ctx":"ctx","x-cxf":["cxf","cef"],"x-embl-dl-nucleotide":["emb","embl"],"x-gamess-input":["inp","gam","gamin"],"x-gaussian-checkpoint":["fch","fchk"],"x-gaussian-cube":"cub","x-gaussian-input":["gau","gjc","gjf"],"x-gaussian-log":"gal","x-gcg8-sequence":"gcg","x-genbank":"gen","x-hin":"hin","x-isostar":["istr","ist"],"x-jcamp-dx":["jdx","dx"],"x-kinemage":"kin","x-macmolecule":"mcm","x-macromodel-input":["mmd","mmod"],"x-mdl-molfile":"mol","x-mdl-rdfile":"rd","x-mdl-rxnfile":"rxn","x-mdl-sdfile":["sd","sdf"],"x-mdl-tgf":"tgf","x-mmcif":"mcif","x-mol2":"mol2","x-molconn-Z":"b","x-mopac-graph":"gpt","x-mopac-input":["mop","mopcrt","mpc","zmt"],"x-mopac-out":"moo","x-ncbi-asn1":"asn","x-ncbi-asn1-ascii":["prt","ent"],"x-ncbi-asn1-binary":["val","aso"],"x-pdb":["pdb","ent"],"x-rosdal":"ros","x-swissprot":"sw","x-vamas-iso14976":"vms","x-vmd":"vmd","x-xtel":"xtel","x-xyz":"xyz"},image:{gif:"gif",ief:"ief",jpeg:["jpeg","jpg","jpe"],pcx:"pcx",png:"png","svg+xml":["svg","svgz"],tiff:["tiff","tif"],"vnd.djvu":["djvu","djv"],"vnd.wap.wbmp":"wbmp","x-canon-cr2":"cr2","x-canon-crw":"crw","x-cmu-raster":"ras","x-coreldraw":"cdr","x-coreldrawpattern":"pat","x-coreldrawtemplate":"cdt","x-corelphotopaint":"cpt","x-epson-erf":"erf","x-icon":"ico","x-jg":"art","x-jng":"jng","x-nikon-nef":"nef","x-olympus-orf":"orf","x-photoshop":"psd","x-portable-anymap":"pnm","x-portable-bitmap":"pbm","x-portable-graymap":"pgm","x-portable-pixmap":"ppm","x-rgb":"rgb","x-xbitmap":"xbm","x-xpixmap":"xpm","x-xwindowdump":"xwd",bmp:"bmp",cgm:"cgm",g3fax:"g3",ktx:"ktx","prs.btif":"btif",sgi:"sgi","vnd.dece.graphic":["uvi","uvvi","uvg","uvvg"],"vnd.dwg":"dwg","vnd.dxf":"dxf","vnd.fastbidsheet":"fbs","vnd.fpx":"fpx","vnd.fst":"fst","vnd.fujixerox.edmics-mmr":"mmr","vnd.fujixerox.edmics-rlc":"rlc","vnd.ms-modi":"mdi","vnd.ms-photo":"wdp","vnd.net-fpx":"npx","vnd.xiff":"xif",webp:"webp","x-3ds":"3ds","x-cmx":"cmx","x-freehand":["fh","fhc","fh4","fh5","fh7"],"x-pict":["pic","pct"],"x-tga":"tga","cis-cod":"cod",pipeg:"jfif"},message:{rfc822:["eml","mime","mht","mhtml","nws"]},model:{iges:["igs","iges"],mesh:["msh","mesh","silo"],vrml:["wrl","vrml"],"x3d+vrml":["x3dv","x3dvz"],"x3d+xml":["x3d","x3dz"],"x3d+binary":["x3db","x3dbz"],"vnd.collada+xml":"dae","vnd.dwf":"dwf","vnd.gdl":"gdl","vnd.gtw":"gtw","vnd.mts":"mts","vnd.vtu":"vtu"},text:{"cache-manifest":["manifest","appcache"],calendar:["ics","icz","ifb"],css:"css",csv:"csv",h323:"323",html:["html","htm","shtml","stm"],iuls:"uls",mathml:"mml",plain:["txt","text","brf","conf","def","list","log","in","bas"],richtext:"rtx",scriptlet:["sct","wsc"],texmacs:["tm","ts"],"tab-separated-values":"tsv","vnd.sun.j2me.app-descriptor":"jad","vnd.wap.wml":"wml","vnd.wap.wmlscript":"wmls","x-bibtex":"bib","x-boo":"boo","x-c++hdr":["h++","hpp","hxx","hh"],"x-c++src":["c++","cpp","cxx","cc"],"x-component":"htc","x-dsrc":"d","x-diff":["diff","patch"],"x-haskell":"hs","x-java":"java","x-literate-haskell":"lhs","x-moc":"moc","x-pascal":["p","pas"],"x-pcs-gcd":"gcd","x-perl":["pl","pm"],"x-python":"py","x-scala":"scala","x-setext":"etx","x-tcl":["tcl","tk"],"x-tex":["tex","ltx","sty","cls"],"x-vcalendar":"vcs","x-vcard":"vcf",n3:"n3","prs.lines.tag":"dsc",sgml:["sgml","sgm"],troff:["t","tr","roff","man","me","ms"],turtle:"ttl","uri-list":["uri","uris","urls"],vcard:"vcard","vnd.curl":"curl","vnd.curl.dcurl":"dcurl","vnd.curl.scurl":"scurl","vnd.curl.mcurl":"mcurl","vnd.dvb.subtitle":"sub","vnd.fly":"fly","vnd.fmi.flexstor":"flx","vnd.graphviz":"gv","vnd.in3d.3dml":"3dml","vnd.in3d.spot":"spot","x-asm":["s","asm"],"x-c":["c","cc","cxx","cpp","h","hh","dic"],"x-fortran":["f","for","f77","f90"],"x-opml":"opml","x-nfo":"nfo","x-sfv":"sfv","x-uuencode":"uu",webviewhtml:"htt"},video:{avif:".avif","3gpp":"3gp",annodex:"axv",dl:"dl",dv:["dif","dv"],fli:"fli",gl:"gl",mpeg:["mpeg","mpg","mpe","m1v","m2v","mp2","mpa","mpv2"],mp4:["mp4","mp4v","mpg4"],quicktime:["qt","mov"],ogg:"ogv","vnd.mpegurl":["mxu","m4u"],"x-flv":"flv","x-la-asf":["lsf","lsx"],"x-mng":"mng","x-ms-asf":["asf","asx","asr"],"x-ms-wm":"wm","x-ms-wmv":"wmv","x-ms-wmx":"wmx","x-ms-wvx":"wvx","x-msvideo":"avi","x-sgi-movie":"movie","x-matroska":["mpv","mkv","mk3d","mks"],"3gpp2":"3g2",h261:"h261",h263:"h263",h264:"h264",jpeg:"jpgv",jpm:["jpm","jpgm"],mj2:["mj2","mjp2"],"vnd.dece.hd":["uvh","uvvh"],"vnd.dece.mobile":["uvm","uvvm"],"vnd.dece.pd":["uvp","uvvp"],"vnd.dece.sd":["uvs","uvvs"],"vnd.dece.video":["uvv","uvvv"],"vnd.dvb.file":"dvb","vnd.fvt":"fvt","vnd.ms-playready.media.pyv":"pyv","vnd.uvvu.mp4":["uvu","uvvu"],"vnd.vivo":"viv",webm:"webm","x-f4v":"f4v","x-m4v":"m4v","x-ms-vob":"vob","x-smv":"smv"},"x-conference":{"x-cooltalk":"ice"},"x-world":{"x-vrml":["vrm","vrml","wrl","flr","wrz","xaf","xof"]}},St=(()=>{const t={};for(let e in Ft)if(Ft.hasOwnProperty(e))for(let n in Ft[e])if(Ft[e].hasOwnProperty(n)){const s=Ft[e][n];if("string"==typeof s)t[s]=e+"/"+n;else for(let i=0;i<s.length;i++)t[s[i]]=e+"/"+n}return t})();t.BlobReader=p,t.BlobWriter=l,t.Data64URIReader=d,t.Data64URIWriter=c,t.HttpRangeReader=h,t.HttpReader=m,t.Reader=i,t.TextReader=a,t.TextWriter=o,t.Uint8ArrayReader=class extends i{constructor(t){super(),this.array=t,this.size=t.length}readUint8Array(t,e){return this.array.slice(t,t+e)}},t.Uint8ArrayWriter=f,t.Writer=r,t.ZipReader=gt,t.ZipWriter=wt,t.configure=function(t){vt=Object.assign({},vt,t)},t.fs=Ut,t.getMimeType=function(t){return t&&St[t.split(".").pop().toLowerCase()]||"application/octet-stream"},t.initShimAsyncCodec=(t,e={})=>({ZipDeflate:ut(t.Deflate,e.deflate),ZipInflate:ut(t.Inflate,e.inflate)}),Object.defineProperty(t,"__esModule",{value:!0})})); | ||
!function(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 t="HTTP error ",n="text/plain";class s{constructor(){this.size=0}init(){this.initialized=!0}}class i extends s{}class r extends s{writeUint8Array(e){this.size+=e.length}}class a extends i{constructor(e){super(),this.blobReader=new p(new Blob([e],{type:n}))}init(){super.init(),this.blobReader.init(),this.size=this.blobReader.size}readUint8Array(e,t){return this.blobReader.readUint8Array(e,t)}}class o extends r{constructor(e){super(),this.encoding=e,this.blob=new Blob([],{type:n})}writeUint8Array(e){super.writeUint8Array(e),this.blob=new Blob([this.blob,e.buffer],{type:n})}getData(){const e=new FileReader;return new Promise(((t,n)=>{e.onload=e=>t(e.target.result),e.onerror=n,e.readAsText(this.blob,this.encoding)}))}}class d extends i{constructor(e){super(),this.dataURI=e;let t=e.length;for(;"="==e.charAt(t-1);)t--;this.dataStart=e.indexOf(",")+1,this.size=Math.floor(.75*(t-this.dataStart))}readUint8Array(e,t){const n=new Uint8Array(t),s=4*Math.floor(e/3),i=atob(this.dataURI.substring(s+this.dataStart,4*Math.ceil((e+t)/3)+this.dataStart)),r=e-3*Math.floor(s/4);for(let e=r;e<r+t;e++)n[e-r]=i.charCodeAt(e);return n}}class c extends r{constructor(e){super(),this.data="data:"+(e||"")+";base64,",this.pending=[]}writeUint8Array(e){super.writeUint8Array(e);let t=0,n=this.pending;const s=this.pending.length;for(this.pending="",t=0;t<3*Math.floor((s+e.length)/3)-s;t++)n+=String.fromCharCode(e[t]);for(;t<e.length;t++)this.pending+=String.fromCharCode(e[t]);n.length>2?this.data+=btoa(n):this.pending=n}getData(){return this.data+btoa(this.pending)}}class p extends i{constructor(e){super(),this.blob=e,this.size=e.size}readUint8Array(e,t){const n=new FileReader;return new Promise(((s,i)=>{n.onload=e=>s(new Uint8Array(e.target.result)),n.onerror=i,n.readAsArrayBuffer(this.blob.slice(e,e+t))}))}}class l extends r{constructor(e){super(),this.offset=0,this.contentType=e,this.blob=new Blob([],{type:e})}writeUint8Array(e){super.writeUint8Array(e),this.blob=new Blob([this.blob,e.buffer],{type:this.contentType}),this.offset=this.blob.size}getData(){return this.blob}}class m extends i{constructor(e){super(),this.url=e}async init(){if(super.init(),function(e){if("undefined"!=typeof document){const t=document.createElement("a");return t.href=e,"http:"==t.protocol||"https:"==t.protocol}return/^https?:\/\//i.test(e)}(this.url))return new Promise(((e,n)=>{const s=new XMLHttpRequest;s.addEventListener("load",(()=>{s.status<400?(this.size=Number(s.getResponseHeader("Content-Length")),this.size?e():x().then((()=>e())).catch(n)):n(t+(s.statusText||s.status)+".")}),!1),s.addEventListener("error",n,!1),s.open("HEAD",this.url),s.send()}));await x()}async readUint8Array(e,t){return this.data||await x(this,this.url),new Uint8Array(this.data.subarray(e,e+t))}}class h extends i{constructor(e){super(),this.url=e}init(){return super.init(),new Promise(((e,n)=>{const s=new XMLHttpRequest;s.addEventListener("load",(()=>{s.status<400?(this.size=Number(s.getResponseHeader("Content-Length")),"bytes"==s.getResponseHeader("Accept-Ranges")?e():n(new Error("HTTP Range not supported"))):n(t+(s.statusText||s.status)+".")}),!1),s.addEventListener("error",n,!1),s.open("HEAD",this.url),s.send()}))}readUint8Array(e,n){return new Promise(((s,i)=>{const r=new XMLHttpRequest;r.open("GET",this.url),r.responseType="arraybuffer",r.setRequestHeader("Range","bytes="+e+"-"+(e+n-1)),r.addEventListener("load",(()=>{r.status<400?s(new Uint8Array(r.response)):i(t+(r.statusText||r.status)+".")}),!1),r.addEventListener("error",i,!1),r.send()}))}}class f extends r{constructor(){super(),this.array=new Uint8Array(0)}writeUint8Array(e){super.writeUint8Array(e);const t=this.array;this.array=new Uint8Array(t.length+e.length),this.array.set(t),this.array.set(e,t.length)}getData(){return this.array}}function x(e,n){return new Promise(((s,i)=>{const r=new XMLHttpRequest;r.addEventListener("load",(()=>{r.status<400?(e.size||(e.size=Number(r.getResponseHeader("Content-Length"))||Number(r.response.byteLength)),e.data=new Uint8Array(r.response),s()):i(t+(r.statusText||r.status)+".")}),!1),r.addEventListener("error",i,!1),r.open("GET",n),r.responseType="arraybuffer",r.send()}))}class u{constructor(){this.crc=-1,this.table=(()=>{const e=[];for(let t=0;t<256;t++){let n=t;for(let e=0;e<8;e++)1&n?n=n>>>1^3988292384:n>>>=1;e[t]=n}return e})()}append(e){const t=this.table;let n=0|this.crc;for(let s=0,i=0|e.length;s<i;s++)n=n>>>8^t[255&(n^e[s])];this.crc=n}get(){return~this.crc}}const v="Invalid pasword",g=16,w="raw",y={name:"PBKDF2"},b={name:"HMAC"},k="SHA-1",z={name:"AES-CTR"},U=Object.assign({hash:b},y),A=Object.assign({iterations:1e3,hash:{name:k}},y),j=Object.assign({hash:k},b),E=Object.assign({length:g},z),D=["deriveBits"],R=["sign"],B=528,F=10,q=[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],S=crypto.subtle;class L{constructor(e,t){this.password=e,this.signed=t,this.input=t&&new Uint8Array(0),this.pendingInput=new Uint8Array(0)}async append(e){const t=async(i=0)=>{if(i+g<=s.length-F){const e=s.subarray(i,i+g),r=await S.decrypt(Object.assign({counter:this.counter},E),this.keys.decrypt,e);return M(this.counter),n.set(new Uint8Array(r),i),t(i+g)}return this.pendingInput=s.subarray(i),this.signed&&(this.input=T(this.input,e)),n};if(this.password){const t=e.subarray(0,18);await async function(e,t,n){e.counter=new Uint8Array(q);const s=t.subarray(0,16),i=t.subarray(16),r=(new TextEncoder).encode(n),a=await S.importKey(w,r,U,!1,D),o=await S.deriveBits(Object.assign({salt:s},A),a,528),d=new Uint8Array(o),c=d.subarray(64);if(e.keys={decrypt:await S.importKey(w,d.subarray(0,32),z,!0,["decrypt"]),authentication:await S.importKey(w,d.subarray(32,64),j,!1,R),passwordVerification:c},c[0]!=i[0]||c[1]!=i[1])throw new Error(v)}(this,t,this.password),this.password=null,e=e.subarray(18)}let n=new Uint8Array(e.length-F-(e.length-F)%g),s=e;return this.pendingInput.length&&(s=T(this.pendingInput,e),n=C(n,s.length-F-(s.length-F)%g)),t()}async flush(){const e=this.pendingInput,t=this.keys,n=e.subarray(0,e.length-F),s=e.subarray(e.length-F);let i=new Uint8Array(0);if(n.length){const e=await S.decrypt(Object.assign({counter:this.counter},E),t.decrypt,n);i=new Uint8Array(e)}let r=!0;if(this.signed){const e=await S.sign(b,t.authentication,this.input.subarray(0,this.input.length-F)),n=new Uint8Array(e);this.input=null;for(let e=0;e<F;e++)n[e]!=s[e]&&(r=!1)}return{valid:r,data:i}}}class I{constructor(e){this.password=e,this.output=new Uint8Array(0),this.pendingInput=new Uint8Array(0)}async append(e){const t=async(i=0)=>{if(i+g<=e.length){const r=e.subarray(i,i+g),a=await S.encrypt(Object.assign({counter:this.counter},E),this.keys.encrypt,r);return M(this.counter),s.set(new Uint8Array(a),i+n.length),t(i+g)}return this.pendingInput=e.subarray(i),this.output=T(this.output,s),s};let n=new Uint8Array(0);this.password&&(n=await async function(e,t){e.counter=new Uint8Array(q);const n=crypto.getRandomValues(new Uint8Array(16)),s=(new TextEncoder).encode(t),i=await S.importKey(w,s,U,!1,D),r=await S.deriveBits(Object.assign({salt:n},A),i,B),a=new Uint8Array(r);return e.keys={encrypt:await S.importKey(w,a.subarray(0,32),z,!0,["encrypt"]),authentication:await S.importKey(w,a.subarray(32,64),j,!1,R),passwordVerification:a.subarray(64)},T(n,e.keys.passwordVerification)}(this,this.password),this.password=null);let s=new Uint8Array(n.length+e.length-e.length%g);return s.set(n,0),this.pendingInput.length&&(e=T(this.pendingInput,e),s=C(s,e.length-e.length%g)),t()}async flush(){let e=new Uint8Array(0);if(this.pendingInput.length){const t=await S.encrypt(Object.assign({counter:this.counter},E),this.keys.encrypt,this.pendingInput);e=new Uint8Array(t),this.output=T(this.output,e)}const t=await S.sign(b,this.keys.authentication,this.output.subarray(18));this.output=null;const n=new Uint8Array(t).subarray(0,F);return{data:T(e,n),signature:n}}}function M(e){for(let t=0;t<16;t++){if(255!=e[t]){e[t]++;break}e[t]=0}}function T(e,t){let n=e;return e.length+t.length&&(n=new Uint8Array(e.length+t.length),n.set(e,0),n.set(t,e.length)),n}function C(e,t){if(t&&t>e.length){const n=e;(e=new Uint8Array(t)).set(n,0)}return e}const P="deflate",W="inflate",Z="Invalid signature";class V{constructor(e){this.signature=e.inputSignature,this.encrypted=Boolean(e.inputPassword),this.signed=e.inputSigned,this.compressed=e.inputCompressed,this.inflate=this.compressed&&new ZipInflate,this.crc32=this.signed&&this.signed&&new u,this.decrypt=this.encrypted&&new L(e.inputPassword)}async append(e){return this.encrypted&&(e=await this.decrypt.append(e)),this.compressed&&e.length&&(e=await this.inflate.append(e)),!this.encrypted&&this.signed&&this.crc32.append(e),e}async flush(){let e,t=new Uint8Array(0);if(this.encrypted){const e=await this.decrypt.flush();if(!e.valid)throw new Error(Z);t=e.data}else if(this.signed){const t=new DataView(new Uint8Array(4).buffer);if(e=this.crc32.get(),t.setUint32(0,e),this.signature!=t.getUint32(0,!1))throw new Error(Z)}return this.compressed&&(t=await this.inflate.append(t)||new Uint8Array(0),await this.inflate.flush()),{data:t,signature:e}}}class H{constructor(e){this.encrypted=e.outputEncrypted,this.signed=e.outputSigned,this.compressed=e.outputCompressed,this.deflate=this.compressed&&new ZipDeflate({level:e.level||5}),this.crc32=this.signed&&new u,this.encrypt=this.encrypted&&new I(e.outputPassword)}async append(e){let t=e;return this.compressed&&e.length&&(t=await this.deflate.append(e)),this.encrypted?t=await this.encrypt.append(t):this.signed&&this.crc32.append(e),t}async flush(){let e,t=new Uint8Array(0);if(this.compressed&&(t=await this.deflate.flush()||new Uint8Array(0)),this.encrypted){t=await this.encrypt.append(t);const n=await this.encrypt.flush();e=n.signature;const s=new Uint8Array(t.length+n.data.length);s.set(t,0),s.set(n.data,t.length),t=s}else this.signed&&(e=this.crc32.get());return{data:t,signature:e}}}const O="init",N="append",K="flush",X="message",_="z-worker.js",G={deflate:[_,"deflate.js"],inflate:[_,"inflate.js"]},Y={pool:[],pendingRequests:[]};function J(e,t){const n=Y.pool;let s;if(e.useWebWorkers){const n=t.codecType;if(null!=e.workerScripts&&null!=e.workerScriptsPath)throw new Error("Either workerScripts or workerScriptsPath may be set, not both");if(e.workerScripts){if(s=e.workerScripts[n],!Array.isArray(s))throw new Error("workerScripts."+n+" must be an array");i=s,s="undefined"!=typeof document?i.map((e=>new URL(e,document.baseURI).href)):i}else s=G[n].slice(0),s[0]=(e.workerScriptsPath||"")+s[0]}var i;if(n.length<e.maxWorkers){const e={worker:s&&new Worker(s[0]),busy:!0,options:t,scripts:s};return n.push(e),s?function(e){const t=e.worker;let n;return t.addEventListener(X,r,!1),e.interface={append:async e=>s({type:N,data:e}),flush:async()=>s({type:K})},e.interface;async function s(t){if(!n){const t=e.scripts.slice(1);await i(Object.assign({type:O,options:e.options,scripts:t}))}return i(t)}function i(e){try{if(e.data)try{t.postMessage(e,[e.data.buffer])}catch(n){t.postMessage(e)}else t.postMessage(e)}catch(e){n.reject(e),t.removeEventListener(X,r,!1)}return new Promise(((e,t)=>n={resolve:e,reject:t}))}function r(s){const i=s.data;if(n){const s=i.error;if(s){const e=new Error(s.message);e.stack=s.stack,n.reject(e),t.removeEventListener(X,r,!1)}else i.type!=O&&i.type!=K&&i.type!=N||(i.type==K?(n.resolve({data:new Uint8Array(i.data),signature:i.signature}),n=null,function(e){if(e.busy=!1,Y.pendingRequests.length){const[{resolve:t,options:n,scripts:s}]=Y.pendingRequests.splice(0,1);e.busy=!0,e.options=n,e.scripts=s,t(e.interface)}else e.worker.terminate(),Y.pool=Y.pool.filter((t=>t!=e))}(e)):n.resolve(i.data&&new Uint8Array(i.data)))}}}(e):Q(e)}{const e=n.find((e=>!e.busy));return e?(e.busy=!0,e.options=t,e.scripts=s,s?e.interface:Q(e)):new Promise((e=>Y.pendingRequests.push({resolve:e,options:t,scripts:s})))}}async function Q(e){const t=(n=e.options).codecType.startsWith(P)?new H(n):n.codecType.startsWith(W)?new V(n):void 0;var n;const s=t.flush.bind(t);return t.flush=async()=>{const t=await s();if(e.busy=!1,Y.pendingRequests.length){const[{resolve:t,options:n}]=Y.pendingRequests.splice(0,1);e.busy=!0,e.options=n,t(await Q(e))}else Y.pool=Y.pool.filter((t=>t!=e));return t},t}async function $(e,t,n,s,i,r,a){const o=Math.max(r.chunkSize,64);return async function r(d=0,c=0){const p=d*o;if(p<i){const l=await t.readUint8Array(p+s,Math.min(o,i-p)),m=await e.append(l);return c+=await ee(n,m),a.onprogress&&a.onprogress(p+l.length,i),r(d+1,c)}{const t=await e.flush();return c+=await ee(n,t.data),{signature:t.signature,length:c}}}()}async function ee(e,t){return t.length&&await e.writeUint8Array(t),t.length}const te="File format is not recognized",ne="End of central directory not found",se="Zip64 extra field not found",ie="Encryption not supported",re="Compression method not supported",ae="utf-8",oe="windows-1252";class de{constructor(e,t,n){this.reader=e,this.config=t,this.options=n}async getData(e,t={}){const n=this.reader;n.initialized||await n.init();const s=await n.readUint8Array(this.offset,30),i=new DataView(s.buffer),r=void 0===t.password?this.options.password:t.password;let a=r&&r.length&&r;if(1347093252!=i.getUint32(0,!1))throw"Local file header not found";const o=this.localDirectory={};ce(o,i,4),o.rawExtraField=s.subarray(this.offset+30+o.filenameLength,this.offset+30+o.filenameLength+o.extraFieldLength),pe(this,o,i,4);let d=this.offset+30+o.filenameLength+o.extraFieldLength;const c=this.bitFlag.encrypted&&o.bitFlag.encrypted;if(c&&!a)throw new Error("File contains encrypted entry");const p=await J(this.config,{codecType:W,inputPassword:a,inputSigned:void 0===t.checkSignature?this.options.checkSignature:t.checkSignature,inputSignature:this.signature,inputCompressed:0!=this.compressionMethod,inputEncrypted:c});return e.initialized||await e.init(),await $(p,n,e,d,this.compressedSize,this.config,{onprogress:t.onprogress}),e.getData()}}function ce(e,t,n){e.version=t.getUint16(n,!0);const s=e.rawBitFlag=t.getUint16(n+2,!0);e.bitFlag={encrypted:1==(1&s),level:(6&s)>>1,dataDescriptor:8==(8&s),languageEncodingFlag:2048==(2048&s)},e.rawLastModDate=t.getUint32(n+6,!0),e.lastModDate=function(e){const t=(4294901760&e)>>16,n=65535&e;try{return new Date(1980+((65024&t)>>9),((480&t)>>5)-1,31&t,(63488&n)>>11,(2016&n)>>5,2*(31&n),0)}catch(e){}}(e.rawLastModDate),e.filenameLength=t.getUint16(n+22,!0),e.extraFieldLength=t.getUint16(n+24,!0)}function pe(e,t,n,s){let i,r,a;const o=t.rawExtraField,d=t.extraField=new Map,c=new DataView(new Uint8Array(o).buffer);let p=0;try{for(;p<o.length;){const e=c.getUint16(p,!0),t=c.getUint16(p+2,!0);d.set(e,{type:e,data:o.slice(p+4,p+4+t)}),p+=4+t}}catch(e){}const l=n.getUint16(s+4,!0);t.signature=n.getUint32(s+10,!0),t.uncompressedSize=n.getUint32(s+18,!0),t.compressedSize=n.getUint32(s+14,!0),i=t.extraFieldZip64=d.get(1),i&&function(e,t){t.zip64=!0;const n=new DataView(e.data.buffer);e.values=[];for(let t=0;t<Math.floor(e.data.length/8);t++)e.values.push(Number(n.getBigUint64(0+8*t,!0)));const s=["uncompressedSize","compressedSize","offset"],i=s.filter((e=>4294967295==t[e]));for(let t=0;t<i.length;t++)e[i[t]]=e.values[t];s.forEach((n=>{if(4294967295==t[n]){if(!e||void 0===e[n])throw new Error(se);t[n]=e&&e[n]}}))}(i,t),a=t.extraFieldUnicodePath=d.get(28789),a&&function(e,t,n){const s=new DataView(e.data.buffer);e.version=s.getUint8(0),e.signature=s.getUint32(1,!0);const i=new u;i.append(n.rawFilename);const r=new DataView(new Uint8Array(4).buffer);r.setUint32(0,i.get()),e.filename=(new TextDecoder).decode(e.data.subarray(5)),e.signature==r.getUint32(0,!1)&&(t.filename=e.filename)}(a,t,e),r=t.extraFieldAES=d.get(39169),r?function(e,t,n){if(e){if(99!=n)throw new Error(re);const s=new DataView(e.data.buffer);e.vendorVersion=s.getUint8(0),e.vendorId=s.getUint8(2);const i=s.getUint8(4);if(e.compressionMethod=s.getUint16(5,!0),3!=i)throw new Error(ie);t.compressionMethod=e.compressionMethod}else t.compressionMethod=n}(r,t,l):t.compressionMethod=l,8==t.compressionMethod&&(t.bitFlag.enhancedDeflating=16!=(16&t.rawBitFlag))}function le(e,t){return new TextDecoder(t).decode(e)}function me(e){return unescape(encodeURIComponent(e))}function he(e){const t=[];for(let n=0;n<e.length;n++)t.push(e.charCodeAt(n));return t}const fe="function";function xe(e,t){return class{constructor(n){const s=e=>{if(this.pendingData){const t=this.pendingData;this.pendingData=new Uint8Array(t.length+e.length),this.pendingData.set(t,0),this.pendingData.set(e,t.length)}else this.pendingData=new Uint8Array(e)};if(this.codec=new e(Object.assign({},t,n)),typeof this.codec.onData==fe)this.codec.onData=s;else{if(typeof this.codec.on!=fe)throw new Error("Cannot register the callback function");this.codec.on("data",s)}}async append(e){return this.codec.push(e),n(this)}async flush(){return this.codec.push(new Uint8Array(0),!0),n(this)}};function n(e){if(e.pendingData){const t=e.pendingData;return e.pendingData=null,t}return new Uint8Array(0)}}const ue={chunkSize:524288,maxWorkers:"undefined"!=typeof navigator&&navigator.hardwareConcurrency||2,workerScriptsPath:void 0,useWebWorkers:!0};let ve=Object.assign({},ue);class ge extends class{constructor(e,t={},n={}){this.reader=e,this.options=t,this.config=n}async getEntries(){const e=this.reader;e.initialized||await e.init();const t=await async function(e,t,n,s){if(e.size<n)throw new Error(te);const i=n+s;let r=n,a=await o(r);a||(a=await o(Math.min(i,e.size)));if(!a)throw new Error(ne);return a;async function o(s){const i=e.size-s,r=await e.readUint8Array(i,s);for(let e=r.length-n;e>=0;e--)if(r[e]==t[0]&&r[e+1]==t[1]&&r[e+2]==t[2]&&r[e+3]==t[3])return{offset:i,buffer:r.slice(e,e+n).buffer}}}(e,[80,75,5,6],22,65536);let n,s=new DataView(t.buffer),i=s.getUint32(16,!0),r=s.getUint16(8,!0);if(4294967295==i||65535==r){n=!0;const s=await e.readUint8Array(t.offset-20,20),a=new DataView(s.buffer);if(1347094023!=Number(a.getUint32(0,!1)))throw new Error("End of Zip64 central directory not found");i=Number(a.getBigUint64(8,!0));const o=await e.readUint8Array(i,56),d=new DataView(o.buffer);if(1347094022!=Number(d.getUint32(0,!1)))throw new Error("End of Zip64 central directory locator not found");r=Number(d.getBigUint64(24,!0)),i-=Number(d.getBigUint64(40,!0))}if(i<0||!n&&(i>=e.size||r>=65535))throw new Error(te);const a=await e.readUint8Array(i,e.size-i);s=new DataView(a.buffer);const o=[];let d=0;for(let e=0;e<r;e++){const e=new de(this.reader,this.config,this.options);if(1347092738!=s.getUint32(d,!1))throw new Error("Central directory header not found");if(e.compressedSize=0,e.uncompressedSize=0,ce(e,s,d+6),e.commentLength=s.getUint16(d+32,!0),e.directory=16==(16&s.getUint8(d+38)),e.offset=s.getUint32(d+42,!0),e.rawFilename=a.subarray(d+46,d+46+e.filenameLength),e.filename=le(e.rawFilename,e.bitFlag.languageEncodingFlag?ae:this.options.filenameEncoding||oe),e.directory||"/"!=e.filename.charAt(e.filename.length-1)||(e.directory=!0),e.rawExtraField=a.subarray(d+46+e.filenameLength,d+46+e.filenameLength+e.extraFieldLength),pe(e,e,s,d+6),0!=e.compressionMethod&&8!=e.compressionMethod)throw new Error(re);e.rawComment=a.subarray(d+46+e.filenameLength+e.extraFieldLength,d+46+e.filenameLength+e.extraFieldLength+e.commentLength),e.comment=le(e.rawComment,e.bitFlag.languageEncodingFlag?ae:this.options.commentEncoding||oe),o.push(e),d+=46+e.filenameLength+e.extraFieldLength+e.commentLength}return o}async close(){}}{constructor(e,t){super(e,t,ve)}}class we extends class{constructor(e,t={},n={}){this.writer=e,this.options=t,this.config=n,this.files=new Map,this.offset=e.size,this.zip64=t.zip64}async add(e,t,n={}){if(e=e.trim(),n.directory&&"/"!=e.charAt(e.length-1)&&(e+="/"),this.files.has(e))throw new Error("File already exists");if(n.comment=he(me(n.comment||"")),n.comment>65536)throw new Error("File entry comment exceeds 64KB");n.zip64=n.zip64||this.zip64,await async function(e,t,n,s){const i=e.files,r=e.writer;let a;i.set(t,null);try{let o,d;try{s.bufferedWrite||e.options.bufferedWrite||e.lockWrite?(o=new f,o.init()):(e.lockWrite=new Promise((e=>a=e)),r.initialized||await r.init(),o=r),(e.offset>=4294967295||n&&(n.size>=4294967295||e.offset+n.size>=4294967295))&&(s.zip64=!0),d=await async function(e,t,n,s,i,r){const a=he(me(e)),o=r.lastModDate||new Date,d=new Uint8Array(26),c=new DataView(d.buffer),p=void 0===r.password?i.password:r.password,l=p&&p.length&&p,m=void 0===r.level?i.level:r.level,h=0!==m&&!r.directory,f=void 0===p||!p.length,x=r.zip64,u={zip64:x,headerArray:d,directory:r.directory,filename:a,comment:r.comment,extraFieldZip64:x?new Uint8Array(28):new Uint8Array(0),extraFieldAES:l?new Uint8Array([1,153,7,0,2,0,65,69,3,0,0]):new Uint8Array(0),rawExtraField:new Uint8Array(0)},v=r.extraField;if(v){let e=4,t=0;v.forEach((t=>e+=t.length));const n=u.rawExtraField=new Uint8Array(e);v.forEach(((e,s)=>{n.set(new Uint16Array([s]),t),n.set(new Uint16Array([e.length]),t+2),n.set(e,t+4),t+=4+e.length}))}r.bitFlag=8,r.version=(void 0===r.version?i.version:r.version)||20,r.compressionMethod=0,h&&(r.compressionMethod=8);x&&(r.version=r.version>45?r.version:45);l&&(r.version=r.version>51?r.version:51,r.bitFlag=9,r.compressionMethod=99,h&&(u.extraFieldAES[9]=8));c.setUint16(0,r.version,!0),c.setUint16(2,r.bitFlag,!0),c.setUint16(4,r.compressionMethod,!0),c.setUint16(6,(o.getHours()<<6|o.getMinutes())<<5|o.getSeconds()/2,!0),c.setUint16(8,(o.getFullYear()-1980<<4|o.getMonth()+1)<<5|o.getDate(),!0),c.setUint16(22,a.length,!0),c.setUint16(24,0,!0);const g=new Uint8Array(30+a.length);let w;if(new DataView(g.buffer).setUint32(0,1347093252),g.set(d,4),g.set(a,30),t){t.initialized||await t.init();const e=await J(s,{codecType:P,level:m,outputPassword:p,outputSigned:f,outputCompressed:h,outputEncrypted:Boolean(p)});await n.writeUint8Array(g),w=await $(e,t,n,0,t.size,s,{onprogress:r.onprogress}),u.compressedSize=w.length}else await n.writeUint8Array(g);const y=new Uint8Array(x?24:16),b=new DataView(y.buffer);if(b.setUint32(0,1347094280),t)if(l||void 0===w.signature||(c.setUint32(10,w.signature,!0),b.setUint32(4,w.signature,!0)),x){c.setUint32(14,4294967295,!0),b.setBigUint64(8,BigInt(u.compressedSize),!0),c.setUint32(18,4294967295,!0),b.setBigUint64(16,BigInt(t.size),!0);const e=new DataView(u.extraFieldZip64.buffer);e.setUint16(0,1,!0),e.setUint16(2,24,!0),e.setBigUint64(4,BigInt(t.size),!0),e.setBigUint64(12,BigInt(u.compressedSize),!0)}else c.setUint32(14,u.compressedSize,!0),b.setUint32(8,u.compressedSize,!0),c.setUint32(18,t.size,!0),b.setUint32(12,t.size,!0);return await n.writeUint8Array(y),u.length=g.length+(w?w.length:0)+y.length,u}(t,n,o,e.config,e.options,s)}catch(e){throw i.delete(t),e}if(i.set(t,d),o!=r&&(e.lockWrite&&await e.lockWrite,await r.writeUint8Array(o.getData())),d.offset=e.offset,d.zip64){new DataView(d.extraFieldZip64.buffer).setBigUint64(20,BigInt(d.offset),!0)}e.offset+=d.length}finally{a&&(e.lockWrite=null,a())}}(this,e,t,n)}async close(e){const t=this.writer,n=this.files;let s=0,i=0,r=this.offset,a=n.size;for(const[,e]of n)i+=46+e.filename.length+e.comment.length+e.extraFieldZip64.length+e.extraFieldAES.length+e.rawExtraField.length;(r+i>=4294967295||a>=65535)&&(this.zip64=!0);const o=new Uint8Array(i+(this.zip64?98:22)),d=new DataView(o.buffer);for(const[,e]of n){const t=e.filename,n=e.extraFieldZip64,i=e.extraFieldAES,r=n.length+i.length+e.rawExtraField.length;d.setUint32(s,1347092738),e.zip64?d.setUint16(s+4,11520):d.setUint16(s+4,5120),o.set(e.headerArray,s+6),d.setUint16(s+30,r,!0),d.setUint16(s+32,e.comment.length,!0),e.directory&&d.setUint8(s+38,16),e.zip64?d.setUint32(s+42,4294967295,!0):d.setUint32(s+42,e.offset,!0),o.set(t,s+46),o.set(n,s+46+t.length),o.set(i,s+46+t.length+n.length),o.set(e.rawExtraField,46+t.length+n.length+i.length),o.set(e.comment,s+46+t.length+r),s+=46+t.length+r+e.comment.length}if(this.zip64&&(d.setUint32(s,1347094022),d.setBigUint64(s+4,BigInt(44),!0),d.setUint16(s+12,45,!0),d.setUint16(s+14,45,!0),d.setBigUint64(s+24,BigInt(a),!0),d.setBigUint64(s+32,BigInt(a),!0),d.setBigUint64(s+40,BigInt(i),!0),d.setBigUint64(s+48,BigInt(r),!0),d.setUint32(s+56,1347094023),d.setBigUint64(s+64,BigInt(r+i),!0),d.setUint32(s+72,1,!0),a=65535,r=4294967295,s+=76),d.setUint32(s,1347093766),d.setUint16(s+8,a,!0),d.setUint16(s+10,a,!0),d.setUint32(s+12,i,!0),d.setUint32(s+16,r,!0),e&&e.length){if(!(e.length<=65536))throw new Error("Zip file comment exceeds 64KB");d.setUint16(s+20,e.length,!0)}return await t.writeUint8Array(o),e&&e.length&&await t.writeUint8Array(e),t.getData()}}{constructor(e,t){super(e,t,ve)}}const ye=524288;class be{constructor(e,t,n,s){if(e.root&&s&&s.getChildByName(t))throw new Error("Entry filename already exists");n||(n={}),this.fs=e,this.name=t,this.id=e.entries.length,this.parent=s,this.children=[],this.zipVersion=n.zipVersion||20,this.uncompressedSize=0,e.entries.push(this),s&&this.parent.children.push(this)}moveTo(e){if(!e.directory)throw"Target entry is not a directory";if(e.isDescendantOf(this))throw"Entry is a ancestor of target entry";if(this!=e){if(e.getChildByName(this.name))throw"Entry filename already exists";De(this),this.parent=e,e.children.push(this)}}getFullname(){let e=this.name,t=this.parent;for(;t;)e=(t.name?t.name+"/":"")+e,t=t.parent;return e}isDescendantOf(e){let t=this.parent;for(;t&&t.id!=e.id;)t=t.parent;return Boolean(t)}}class ke extends be{constructor(e,t,n,s){super(e,t,n,s),this.Reader=n.Reader,this.Writer=n.Writer,this.data=n.data,n.getData&&(this.getData=n.getData)}async getData(e,t={}){return!e||e.constructor==this.Writer&&this.data?this.data:(this.reader||(this.reader=new this.Reader(this.data)),await this.reader.init(),await e.init(),this.uncompressedSize=this.reader.size,async function(e,t,n){return s();async function s(i=0){const r=i*ye;if(n.onprogress&&n.onprogress(r,e.size),r<e.size){const n=await e.readUint8Array(r,Math.min(ye,e.size-r));return await t.writeUint8Array(n),s(i+1)}return t.getData()}}(this.reader,e,t))}getText(e,t){return this.getData(new o(e),t)}getBlob(e,t){return this.getData(new l(e),t)}getData64URI(e,t){return this.getData(new c(e),t)}}class ze extends be{constructor(e,t,n,s){super(e,t,n,s),this.directory=!0}addDirectory(e){return Be(this,e,null,!0)}addText(e,t){return Be(this,e,{data:t,Reader:a,Writer:o})}addBlob(e,t){return Be(this,e,{data:t,Reader:p,Writer:l})}addData64URI(e,t){return Be(this,e,{data:t,Reader:d,Writer:c})}addHttpContent(e,t,n={}){return Be(this,e,{data:t,Reader:n.useRangeHeader?h:m})}addFileEntry(e){!async function(e,t){t.isDirectory?await s(e,t):await new Promise(((n,s)=>{t.file((s=>{e.addBlob(t.name,s),n()}),s)}));function n(e){return new Promise(((t,n)=>{let s=[];function i(e){e.readEntries((n=>{n.length?(s=s.concat(n),i(e)):t(s)}),n)}e.isDirectory&&i(e.createReader()),e.isFile&&t(s)}))}async function s(e,t){const i=await n(t);for(const t of i)t.isDirectory&&await s(e.addDirectory(t.name)),await new Promise(((n,s)=>{t.isFile&&t.file((s=>{const i=e.addBlob(t.name,s);i.uncompressedSize=s.size,n(i)}),s)}))}}(this,e)}async addData(e,t){return Be(this,e,t)}async importBlob(e,t={}){await this.importZip(new p(e),t)}async importData64URI(e,t={}){await this.importZip(new d(e),t)}async importHttpContent(e,t={}){await this.importZip(t.useRangeHeader?new h(e):new m(e),t)}async exportBlob(e={}){return this.exportZip(new l("application/zip"),e)}async exportData64URI(e={}){return this.exportZip(new c("application/zip"),e)}async importZip(e,t){await e.init();const n=new ge(e),s=await n.getEntries();let i=0;const r=Ae(s,"compressedSize");s.forEach((e=>{let n=this,s=e.filename.split("/"),a=s.pop();if(s.forEach((e=>n=n.getChildByName(e)||new ze(this.fs,e,null,n))),!e.directory){let s=i;Be(n,a,{data:e,Reader:je(Object.assign({},t,{onprogress:e=>{t.onprogress&&t.onprogress(s+e,r)}}))}),i+=e.compressedSize}}))}async exportZip(e,t){await Ee(this);const n=new we(e);return await async function(e,t,n,s){let i=0;async function r(e,t){async function a(){let a=0;for(const o of t.children){let t=i;await e.add(o.getFullname(),o.reader,Object.assign({directory:o.directory,version:o.zipVersion},s,{onprogress:e=>{s.onprogress&&s.onprogress(t+a+e,n)}})),i+=o.uncompressedSize,await r(e,o),a++}}await a()}await r(e,t)}(n,this,Ae([this],"uncompressedSize"),t),await n.close(),e.getData()}getChildByName(e){for(let t=0;t<this.children.length;t++){const n=this.children[t];if(n.name==e)return n}}}const Ue={FS:class{constructor(){Re(this)}remove(e){De(e),this.entries[e.id]=null}find(e){const t=e.split("/");let n=this.root;for(let e=0;n&&e<t.length;e++)n=n.getChildByName(t[e]);return n}getById(e){return this.entries[e]}async importBlob(e){Re(this),await this.root.importBlob(e)}async importData64URI(e){Re(this),await this.root.importData64URI(e)}async importHttpContent(e,t){this.entries=[],this.root=new ze(this),await this.root.importHttpContent(e,t)}async exportBlob(e){return this.root.exportBlob(e)}async exportData64URI(e){return this.root.exportData64URI(e)}},ZipDirectoryEntry:ze,ZipFileEntry:ke};function Ae(e,t){let n=0;return e.forEach((function e(s){n+=s[t],s.children&&s.children.forEach(e)})),n}function je(e){return class{constructor(e){this.entry=e,this.size=0}async readUint8Array(t,n){if(!this.blobReader){const t=await this.entry.getData(new l,e);this.data=t,this.blobReader=new p(t)}return this.blobReader.readUint8Array(t,n)}async init(){this.size=this.entry.uncompressedSize}}}async function Ee(e){if(e.children.length)for(const t of e.children)t.directory?await Ee(t):(t.reader=new t.Reader(t.data),await t.reader.init(),t.uncompressedSize=t.reader.size)}function De(e){const t=e.parent.children;t.forEach(((n,s)=>{n.id==e.id&&t.splice(s,1)}))}function Re(e){e.entries=[],e.root=new ze(e)}function Be(e,t,n,s){if(e.directory)return s?new ze(e.fs,t,n,e):new ke(e.fs,t,n,e);throw"Parent entry is not a directory"}const Fe={application:{"andrew-inset":"ez",annodex:"anx","atom+xml":"atom","atomcat+xml":"atomcat","atomserv+xml":"atomsrv",bbolin:"lin",cap:["cap","pcap"],"cu-seeme":"cu","davmount+xml":"davmount",dsptype:"tsp",ecmascript:["es","ecma"],futuresplash:"spl",hta:"hta","java-archive":"jar","java-serialized-object":"ser","java-vm":"class",javascript:"js",m3g:"m3g","mac-binhex40":"hqx",mathematica:["nb","ma","mb"],msaccess:"mdb",msword:["doc","dot"],mxf:"mxf",oda:"oda",ogg:"ogx",pdf:"pdf","pgp-keys":"key","pgp-signature":["asc","sig"],"pics-rules":"prf",postscript:["ps","ai","eps","epsi","epsf","eps2","eps3"],rar:"rar","rdf+xml":"rdf","rss+xml":"rss",rtf:"rtf",smil:["smi","smil"],"xhtml+xml":["xhtml","xht"],xml:["xml","xsl","xsd"],"xspf+xml":"xspf",zip:"zip","vnd.android.package-archive":"apk","vnd.cinderella":"cdy","vnd.google-earth.kml+xml":"kml","vnd.google-earth.kmz":"kmz","vnd.mozilla.xul+xml":"xul","vnd.ms-excel":["xls","xlb","xlt","xlm","xla","xlc","xlw"],"vnd.ms-pki.seccat":"cat","vnd.ms-pki.stl":"stl","vnd.ms-powerpoint":["ppt","pps","pot"],"vnd.oasis.opendocument.chart":"odc","vnd.oasis.opendocument.database":"odb","vnd.oasis.opendocument.formula":"odf","vnd.oasis.opendocument.graphics":"odg","vnd.oasis.opendocument.graphics-template":"otg","vnd.oasis.opendocument.image":"odi","vnd.oasis.opendocument.presentation":"odp","vnd.oasis.opendocument.presentation-template":"otp","vnd.oasis.opendocument.spreadsheet":"ods","vnd.oasis.opendocument.spreadsheet-template":"ots","vnd.oasis.opendocument.text":"odt","vnd.oasis.opendocument.text-master":"odm","vnd.oasis.opendocument.text-template":"ott","vnd.oasis.opendocument.text-web":"oth","vnd.openxmlformats-officedocument.spreadsheetml.sheet":"xlsx","vnd.openxmlformats-officedocument.spreadsheetml.template":"xltx","vnd.openxmlformats-officedocument.presentationml.presentation":"pptx","vnd.openxmlformats-officedocument.presentationml.slideshow":"ppsx","vnd.openxmlformats-officedocument.presentationml.template":"potx","vnd.openxmlformats-officedocument.wordprocessingml.document":"docx","vnd.openxmlformats-officedocument.wordprocessingml.template":"dotx","vnd.smaf":"mmf","vnd.stardivision.calc":"sdc","vnd.stardivision.chart":"sds","vnd.stardivision.draw":"sda","vnd.stardivision.impress":"sdd","vnd.stardivision.math":["sdf","smf"],"vnd.stardivision.writer":["sdw","vor"],"vnd.stardivision.writer-global":"sgl","vnd.sun.xml.calc":"sxc","vnd.sun.xml.calc.template":"stc","vnd.sun.xml.draw":"sxd","vnd.sun.xml.draw.template":"std","vnd.sun.xml.impress":"sxi","vnd.sun.xml.impress.template":"sti","vnd.sun.xml.math":"sxm","vnd.sun.xml.writer":"sxw","vnd.sun.xml.writer.global":"sxg","vnd.sun.xml.writer.template":"stw","vnd.symbian.install":["sis","sisx"],"vnd.visio":["vsd","vst","vss","vsw"],"vnd.wap.wbxml":"wbxml","vnd.wap.wmlc":"wmlc","vnd.wap.wmlscriptc":"wmlsc","vnd.wordperfect":"wpd","vnd.wordperfect5.1":"wp5","x-123":"wk","x-7z-compressed":"7z","x-abiword":"abw","x-apple-diskimage":"dmg","x-bcpio":"bcpio","x-bittorrent":"torrent","x-cbr":["cbr","cba","cbt","cb7"],"x-cbz":"cbz","x-cdf":["cdf","cda"],"x-cdlink":"vcd","x-chess-pgn":"pgn","x-cpio":"cpio","x-csh":"csh","x-debian-package":["deb","udeb"],"x-director":["dcr","dir","dxr","cst","cct","cxt","w3d","fgd","swa"],"x-dms":"dms","x-doom":"wad","x-dvi":"dvi","x-httpd-eruby":"rhtml","x-font":"pcf.Z","x-freemind":"mm","x-gnumeric":"gnumeric","x-go-sgf":"sgf","x-graphing-calculator":"gcf","x-gtar":["gtar","taz"],"x-hdf":"hdf","x-httpd-php":["phtml","pht","php"],"x-httpd-php-source":"phps","x-httpd-php3":"php3","x-httpd-php3-preprocessed":"php3p","x-httpd-php4":"php4","x-httpd-php5":"php5","x-ica":"ica","x-info":"info","x-internet-signup":["ins","isp"],"x-iphone":"iii","x-iso9660-image":"iso","x-java-jnlp-file":"jnlp","x-jmol":"jmz","x-killustrator":"kil","x-koan":["skp","skd","skt","skm"],"x-kpresenter":["kpr","kpt"],"x-kword":["kwd","kwt"],"x-latex":"latex","x-lha":"lha","x-lyx":"lyx","x-lzh":"lzh","x-lzx":"lzx","x-maker":["frm","maker","frame","fm","fb","book","fbdoc"],"x-ms-wmd":"wmd","x-ms-wmz":"wmz","x-msdos-program":["com","exe","bat","dll"],"x-msi":"msi","x-netcdf":["nc","cdf"],"x-ns-proxy-autoconfig":["pac","dat"],"x-nwc":"nwc","x-object":"o","x-oz-application":"oza","x-pkcs7-certreqresp":"p7r","x-python-code":["pyc","pyo"],"x-qgis":["qgs","shp","shx"],"x-quicktimeplayer":"qtl","x-redhat-package-manager":"rpm","x-ruby":"rb","x-sh":"sh","x-shar":"shar","x-shockwave-flash":["swf","swfl"],"x-silverlight":"scr","x-stuffit":"sit","x-sv4cpio":"sv4cpio","x-sv4crc":"sv4crc","x-tar":"tar","x-tcl":"tcl","x-tex-gf":"gf","x-tex-pk":"pk","x-texinfo":["texinfo","texi"],"x-trash":["~","%","bak","old","sik"],"x-troff":["t","tr","roff"],"x-troff-man":"man","x-troff-me":"me","x-troff-ms":"ms","x-ustar":"ustar","x-wais-source":"src","x-wingz":"wz","x-x509-ca-cert":["crt","der","cer"],"x-xcf":"xcf","x-xfig":"fig","x-xpinstall":"xpi",applixware:"aw","atomsvc+xml":"atomsvc","ccxml+xml":"ccxml","cdmi-capability":"cdmia","cdmi-container":"cdmic","cdmi-domain":"cdmid","cdmi-object":"cdmio","cdmi-queue":"cdmiq","docbook+xml":"dbk","dssc+der":"dssc","dssc+xml":"xdssc","emma+xml":"emma","epub+zip":"epub",exi:"exi","font-tdpfr":"pfr","gml+xml":"gml","gpx+xml":"gpx",gxf:"gxf",hyperstudio:"stk","inkml+xml":["ink","inkml"],ipfix:"ipfix",json:"json","jsonml+json":"jsonml","lost+xml":"lostxml","mads+xml":"mads",marc:"mrc","marcxml+xml":"mrcx","mathml+xml":"mathml",mbox:"mbox","mediaservercontrol+xml":"mscml","metalink+xml":"metalink","metalink4+xml":"meta4","mets+xml":"mets","mods+xml":"mods",mp21:["m21","mp21"],mp4:"mp4s","oebps-package+xml":"opf","omdoc+xml":"omdoc",onenote:["onetoc","onetoc2","onetmp","onepkg"],oxps:"oxps","patch-ops-error+xml":"xer","pgp-encrypted":"pgp",pkcs10:"p10","pkcs7-mime":["p7m","p7c"],"pkcs7-signature":"p7s",pkcs8:"p8","pkix-attr-cert":"ac","pkix-crl":"crl","pkix-pkipath":"pkipath",pkixcmp:"pki","pls+xml":"pls","prs.cww":"cww","pskc+xml":"pskcxml","reginfo+xml":"rif","relax-ng-compact-syntax":"rnc","resource-lists+xml":"rl","resource-lists-diff+xml":"rld","rls-services+xml":"rs","rpki-ghostbusters":"gbr","rpki-manifest":"mft","rpki-roa":"roa","rsd+xml":"rsd","sbml+xml":"sbml","scvp-cv-request":"scq","scvp-cv-response":"scs","scvp-vp-request":"spq","scvp-vp-response":"spp",sdp:"sdp","set-payment-initiation":"setpay","set-registration-initiation":"setreg","shf+xml":"shf","sparql-query":"rq","sparql-results+xml":"srx",srgs:"gram","srgs+xml":"grxml","sru+xml":"sru","ssdl+xml":"ssdl","ssml+xml":"ssml","tei+xml":["tei","teicorpus"],"thraud+xml":"tfi","timestamped-data":"tsd","vnd.3gpp.pic-bw-large":"plb","vnd.3gpp.pic-bw-small":"psb","vnd.3gpp.pic-bw-var":"pvb","vnd.3gpp2.tcap":"tcap","vnd.3m.post-it-notes":"pwn","vnd.accpac.simply.aso":"aso","vnd.accpac.simply.imp":"imp","vnd.acucobol":"acu","vnd.acucorp":["atc","acutc"],"vnd.adobe.air-application-installer-package+zip":"air","vnd.adobe.formscentral.fcdt":"fcdt","vnd.adobe.fxp":["fxp","fxpl"],"vnd.adobe.xdp+xml":"xdp","vnd.adobe.xfdf":"xfdf","vnd.ahead.space":"ahead","vnd.airzip.filesecure.azf":"azf","vnd.airzip.filesecure.azs":"azs","vnd.amazon.ebook":"azw","vnd.americandynamics.acc":"acc","vnd.amiga.ami":"ami","vnd.anser-web-certificate-issue-initiation":"cii","vnd.anser-web-funds-transfer-initiation":"fti","vnd.antix.game-component":"atx","vnd.apple.installer+xml":"mpkg","vnd.apple.mpegurl":"m3u8","vnd.aristanetworks.swi":"swi","vnd.astraea-software.iota":"iota","vnd.audiograph":"aep","vnd.blueice.multipass":"mpm","vnd.bmi":"bmi","vnd.businessobjects":"rep","vnd.chemdraw+xml":"cdxml","vnd.chipnuts.karaoke-mmd":"mmd","vnd.claymore":"cla","vnd.cloanto.rp9":"rp9","vnd.clonk.c4group":["c4g","c4d","c4f","c4p","c4u"],"vnd.cluetrust.cartomobile-config":"c11amc","vnd.cluetrust.cartomobile-config-pkg":"c11amz","vnd.commonspace":"csp","vnd.contact.cmsg":"cdbcmsg","vnd.cosmocaller":"cmc","vnd.crick.clicker":"clkx","vnd.crick.clicker.keyboard":"clkk","vnd.crick.clicker.palette":"clkp","vnd.crick.clicker.template":"clkt","vnd.crick.clicker.wordbank":"clkw","vnd.criticaltools.wbs+xml":"wbs","vnd.ctc-posml":"pml","vnd.cups-ppd":"ppd","vnd.curl.car":"car","vnd.curl.pcurl":"pcurl","vnd.dart":"dart","vnd.data-vision.rdz":"rdz","vnd.dece.data":["uvf","uvvf","uvd","uvvd"],"vnd.dece.ttml+xml":["uvt","uvvt"],"vnd.dece.unspecified":["uvx","uvvx"],"vnd.dece.zip":["uvz","uvvz"],"vnd.denovo.fcselayout-link":"fe_launch","vnd.dna":"dna","vnd.dolby.mlp":"mlp","vnd.dpgraph":"dpg","vnd.dreamfactory":"dfac","vnd.ds-keypoint":"kpxx","vnd.dvb.ait":"ait","vnd.dvb.service":"svc","vnd.dynageo":"geo","vnd.ecowin.chart":"mag","vnd.enliven":"nml","vnd.epson.esf":"esf","vnd.epson.msf":"msf","vnd.epson.quickanime":"qam","vnd.epson.salt":"slt","vnd.epson.ssf":"ssf","vnd.eszigno3+xml":["es3","et3"],"vnd.ezpix-album":"ez2","vnd.ezpix-package":"ez3","vnd.fdf":"fdf","vnd.fdsn.mseed":"mseed","vnd.fdsn.seed":["seed","dataless"],"vnd.flographit":"gph","vnd.fluxtime.clip":"ftc","vnd.framemaker":["fm","frame","maker","book"],"vnd.frogans.fnc":"fnc","vnd.frogans.ltf":"ltf","vnd.fsc.weblaunch":"fsc","vnd.fujitsu.oasys":"oas","vnd.fujitsu.oasys2":"oa2","vnd.fujitsu.oasys3":"oa3","vnd.fujitsu.oasysgp":"fg5","vnd.fujitsu.oasysprs":"bh2","vnd.fujixerox.ddd":"ddd","vnd.fujixerox.docuworks":"xdw","vnd.fujixerox.docuworks.binder":"xbd","vnd.fuzzysheet":"fzs","vnd.genomatix.tuxedo":"txd","vnd.geogebra.file":"ggb","vnd.geogebra.tool":"ggt","vnd.geometry-explorer":["gex","gre"],"vnd.geonext":"gxt","vnd.geoplan":"g2w","vnd.geospace":"g3w","vnd.gmx":"gmx","vnd.grafeq":["gqf","gqs"],"vnd.groove-account":"gac","vnd.groove-help":"ghf","vnd.groove-identity-message":"gim","vnd.groove-injector":"grv","vnd.groove-tool-message":"gtm","vnd.groove-tool-template":"tpl","vnd.groove-vcard":"vcg","vnd.hal+xml":"hal","vnd.handheld-entertainment+xml":"zmm","vnd.hbci":"hbci","vnd.hhe.lesson-player":"les","vnd.hp-hpgl":"hpgl","vnd.hp-hpid":"hpid","vnd.hp-hps":"hps","vnd.hp-jlyt":"jlt","vnd.hp-pcl":"pcl","vnd.hp-pclxl":"pclxl","vnd.hydrostatix.sof-data":"sfd-hdstx","vnd.ibm.minipay":"mpy","vnd.ibm.modcap":["afp","listafp","list3820"],"vnd.ibm.rights-management":"irm","vnd.ibm.secure-container":"sc","vnd.iccprofile":["icc","icm"],"vnd.igloader":"igl","vnd.immervision-ivp":"ivp","vnd.immervision-ivu":"ivu","vnd.insors.igm":"igm","vnd.intercon.formnet":["xpw","xpx"],"vnd.intergeo":"i2g","vnd.intu.qbo":"qbo","vnd.intu.qfx":"qfx","vnd.ipunplugged.rcprofile":"rcprofile","vnd.irepository.package+xml":"irp","vnd.is-xpr":"xpr","vnd.isac.fcs":"fcs","vnd.jam":"jam","vnd.jcp.javame.midlet-rms":"rms","vnd.jisp":"jisp","vnd.joost.joda-archive":"joda","vnd.kahootz":["ktz","ktr"],"vnd.kde.karbon":"karbon","vnd.kde.kchart":"chrt","vnd.kde.kformula":"kfo","vnd.kde.kivio":"flw","vnd.kde.kontour":"kon","vnd.kde.kpresenter":["kpr","kpt"],"vnd.kde.kspread":"ksp","vnd.kde.kword":["kwd","kwt"],"vnd.kenameaapp":"htke","vnd.kidspiration":"kia","vnd.kinar":["kne","knp"],"vnd.koan":["skp","skd","skt","skm"],"vnd.kodak-descriptor":"sse","vnd.las.las+xml":"lasxml","vnd.llamagraphics.life-balance.desktop":"lbd","vnd.llamagraphics.life-balance.exchange+xml":"lbe","vnd.lotus-1-2-3":"123","vnd.lotus-approach":"apr","vnd.lotus-freelance":"pre","vnd.lotus-notes":"nsf","vnd.lotus-organizer":"org","vnd.lotus-screencam":"scm","vnd.lotus-wordpro":"lwp","vnd.macports.portpkg":"portpkg","vnd.mcd":"mcd","vnd.medcalcdata":"mc1","vnd.mediastation.cdkey":"cdkey","vnd.mfer":"mwf","vnd.mfmp":"mfm","vnd.micrografx.flo":"flo","vnd.micrografx.igx":"igx","vnd.mif":"mif","vnd.mobius.daf":"daf","vnd.mobius.dis":"dis","vnd.mobius.mbk":"mbk","vnd.mobius.mqy":"mqy","vnd.mobius.msl":"msl","vnd.mobius.plc":"plc","vnd.mobius.txf":"txf","vnd.mophun.application":"mpn","vnd.mophun.certificate":"mpc","vnd.ms-artgalry":"cil","vnd.ms-cab-compressed":"cab","vnd.ms-excel.addin.macroenabled.12":"xlam","vnd.ms-excel.sheet.binary.macroenabled.12":"xlsb","vnd.ms-excel.sheet.macroenabled.12":"xlsm","vnd.ms-excel.template.macroenabled.12":"xltm","vnd.ms-fontobject":"eot","vnd.ms-htmlhelp":"chm","vnd.ms-ims":"ims","vnd.ms-lrm":"lrm","vnd.ms-officetheme":"thmx","vnd.ms-powerpoint.addin.macroenabled.12":"ppam","vnd.ms-powerpoint.presentation.macroenabled.12":"pptm","vnd.ms-powerpoint.slide.macroenabled.12":"sldm","vnd.ms-powerpoint.slideshow.macroenabled.12":"ppsm","vnd.ms-powerpoint.template.macroenabled.12":"potm","vnd.ms-project":["mpp","mpt"],"vnd.ms-word.document.macroenabled.12":"docm","vnd.ms-word.template.macroenabled.12":"dotm","vnd.ms-works":["wps","wks","wcm","wdb"],"vnd.ms-wpl":"wpl","vnd.ms-xpsdocument":"xps","vnd.mseq":"mseq","vnd.musician":"mus","vnd.muvee.style":"msty","vnd.mynfc":"taglet","vnd.neurolanguage.nlu":"nlu","vnd.nitf":["ntf","nitf"],"vnd.noblenet-directory":"nnd","vnd.noblenet-sealer":"nns","vnd.noblenet-web":"nnw","vnd.nokia.n-gage.data":"ngdat","vnd.nokia.n-gage.symbian.install":"n-gage","vnd.nokia.radio-preset":"rpst","vnd.nokia.radio-presets":"rpss","vnd.novadigm.edm":"edm","vnd.novadigm.edx":"edx","vnd.novadigm.ext":"ext","vnd.oasis.opendocument.chart-template":"otc","vnd.oasis.opendocument.formula-template":"odft","vnd.oasis.opendocument.image-template":"oti","vnd.olpc-sugar":"xo","vnd.oma.dd2+xml":"dd2","vnd.openofficeorg.extension":"oxt","vnd.openxmlformats-officedocument.presentationml.slide":"sldx","vnd.osgeo.mapguide.package":"mgp","vnd.osgi.dp":"dp","vnd.osgi.subsystem":"esa","vnd.palm":["pdb","pqa","oprc"],"vnd.pawaafile":"paw","vnd.pg.format":"str","vnd.pg.osasli":"ei6","vnd.picsel":"efif","vnd.pmi.widget":"wg","vnd.pocketlearn":"plf","vnd.powerbuilder6":"pbd","vnd.previewsystems.box":"box","vnd.proteus.magazine":"mgz","vnd.publishare-delta-tree":"qps","vnd.pvi.ptid1":"ptid","vnd.quark.quarkxpress":["qxd","qxt","qwd","qwt","qxl","qxb"],"vnd.realvnc.bed":"bed","vnd.recordare.musicxml":"mxl","vnd.recordare.musicxml+xml":"musicxml","vnd.rig.cryptonote":"cryptonote","vnd.rn-realmedia":"rm","vnd.rn-realmedia-vbr":"rmvb","vnd.route66.link66+xml":"link66","vnd.sailingtracker.track":"st","vnd.seemail":"see","vnd.sema":"sema","vnd.semd":"semd","vnd.semf":"semf","vnd.shana.informed.formdata":"ifm","vnd.shana.informed.formtemplate":"itp","vnd.shana.informed.interchange":"iif","vnd.shana.informed.package":"ipk","vnd.simtech-mindmapper":["twd","twds"],"vnd.smart.teacher":"teacher","vnd.solent.sdkm+xml":["sdkm","sdkd"],"vnd.spotfire.dxp":"dxp","vnd.spotfire.sfs":"sfs","vnd.stepmania.package":"smzip","vnd.stepmania.stepchart":"sm","vnd.sus-calendar":["sus","susp"],"vnd.svd":"svd","vnd.syncml+xml":"xsm","vnd.syncml.dm+wbxml":"bdm","vnd.syncml.dm+xml":"xdm","vnd.tao.intent-module-archive":"tao","vnd.tcpdump.pcap":["pcap","cap","dmp"],"vnd.tmobile-livetv":"tmo","vnd.trid.tpt":"tpt","vnd.triscape.mxs":"mxs","vnd.trueapp":"tra","vnd.ufdl":["ufd","ufdl"],"vnd.uiq.theme":"utz","vnd.umajin":"umj","vnd.unity":"unityweb","vnd.uoml+xml":"uoml","vnd.vcx":"vcx","vnd.visionary":"vis","vnd.vsf":"vsf","vnd.webturbo":"wtb","vnd.wolfram.player":"nbp","vnd.wqd":"wqd","vnd.wt.stf":"stf","vnd.xara":"xar","vnd.xfdl":"xfdl","vnd.yamaha.hv-dic":"hvd","vnd.yamaha.hv-script":"hvs","vnd.yamaha.hv-voice":"hvp","vnd.yamaha.openscoreformat":"osf","vnd.yamaha.openscoreformat.osfpvg+xml":"osfpvg","vnd.yamaha.smaf-audio":"saf","vnd.yamaha.smaf-phrase":"spf","vnd.yellowriver-custom-menu":"cmp","vnd.zul":["zir","zirz"],"vnd.zzazz.deck+xml":"zaz","voicexml+xml":"vxml",widget:"wgt",winhlp:"hlp","wsdl+xml":"wsdl","wspolicy+xml":"wspolicy","x-ace-compressed":"ace","x-authorware-bin":["aab","x32","u32","vox"],"x-authorware-map":"aam","x-authorware-seg":"aas","x-blorb":["blb","blorb"],"x-bzip":"bz","x-bzip2":["bz2","boz"],"x-cfs-compressed":"cfs","x-chat":"chat","x-conference":"nsc","x-dgc-compressed":"dgc","x-dtbncx+xml":"ncx","x-dtbook+xml":"dtb","x-dtbresource+xml":"res","x-eva":"eva","x-font-bdf":"bdf","x-font-ghostscript":"gsf","x-font-linux-psf":"psf","x-font-otf":"otf","x-font-pcf":"pcf","x-font-snf":"snf","x-font-ttf":["ttf","ttc"],"x-font-type1":["pfa","pfb","pfm","afm"],"x-font-woff":"woff","x-freearc":"arc","x-gca-compressed":"gca","x-glulx":"ulx","x-gramps-xml":"gramps","x-install-instructions":"install","x-lzh-compressed":["lzh","lha"],"x-mie":"mie","x-mobipocket-ebook":["prc","mobi"],"x-ms-application":"application","x-ms-shortcut":"lnk","x-ms-xbap":"xbap","x-msbinder":"obd","x-mscardfile":"crd","x-msclip":"clp","x-msdownload":["exe","dll","com","bat","msi"],"x-msmediaview":["mvb","m13","m14"],"x-msmetafile":["wmf","wmz","emf","emz"],"x-msmoney":"mny","x-mspublisher":"pub","x-msschedule":"scd","x-msterminal":"trm","x-mswrite":"wri","x-nzb":"nzb","x-pkcs12":["p12","pfx"],"x-pkcs7-certificates":["p7b","spc"],"x-research-info-systems":"ris","x-silverlight-app":"xap","x-sql":"sql","x-stuffitx":"sitx","x-subrip":"srt","x-t3vm-image":"t3","x-tads":"gam","x-tex":"tex","x-tex-tfm":"tfm","x-tgif":"obj","x-xliff+xml":"xlf","x-xz":"xz","x-zmachine":["z1","z2","z3","z4","z5","z6","z7","z8"],"xaml+xml":"xaml","xcap-diff+xml":"xdf","xenc+xml":"xenc","xml-dtd":"dtd","xop+xml":"xop","xproc+xml":"xpl","xslt+xml":"xslt","xv+xml":["mxml","xhvml","xvml","xvm"],yang:"yang","yin+xml":"yin",envoy:"evy",fractals:"fif","internet-property-stream":"acx",olescript:"axs","vnd.ms-outlook":"msg","vnd.ms-pkicertstore":"sst","x-compress":"z","x-compressed":"tgz","x-gzip":"gz","x-perfmon":["pma","pmc","pml","pmr","pmw"],"x-pkcs7-mime":["p7c","p7m"],"ynd.ms-pkipko":"pko"},audio:{amr:"amr","amr-wb":"awb",annodex:"axa",basic:["au","snd"],flac:"flac",midi:["mid","midi","kar","rmi"],mpeg:["mpga","mpega","mp2","mp3","m4a","mp2a","m2a","m3a"],mpegurl:"m3u",ogg:["oga","ogg","spx"],"prs.sid":"sid","x-aiff":["aif","aiff","aifc"],"x-gsm":"gsm","x-ms-wma":"wma","x-ms-wax":"wax","x-pn-realaudio":"ram","x-realaudio":"ra","x-sd2":"sd2","x-wav":"wav",adpcm:"adp",mp4:"mp4a",s3m:"s3m",silk:"sil","vnd.dece.audio":["uva","uvva"],"vnd.digital-winds":"eol","vnd.dra":"dra","vnd.dts":"dts","vnd.dts.hd":"dtshd","vnd.lucent.voice":"lvp","vnd.ms-playready.media.pya":"pya","vnd.nuera.ecelp4800":"ecelp4800","vnd.nuera.ecelp7470":"ecelp7470","vnd.nuera.ecelp9600":"ecelp9600","vnd.rip":"rip",webm:"weba","x-aac":"aac","x-caf":"caf","x-matroska":"mka","x-pn-realaudio-plugin":"rmp",xm:"xm",mid:["mid","rmi"]},chemical:{"x-alchemy":"alc","x-cache":["cac","cache"],"x-cache-csf":"csf","x-cactvs-binary":["cbin","cascii","ctab"],"x-cdx":"cdx","x-chem3d":"c3d","x-cif":"cif","x-cmdf":"cmdf","x-cml":"cml","x-compass":"cpa","x-crossfire":"bsd","x-csml":["csml","csm"],"x-ctx":"ctx","x-cxf":["cxf","cef"],"x-embl-dl-nucleotide":["emb","embl"],"x-gamess-input":["inp","gam","gamin"],"x-gaussian-checkpoint":["fch","fchk"],"x-gaussian-cube":"cub","x-gaussian-input":["gau","gjc","gjf"],"x-gaussian-log":"gal","x-gcg8-sequence":"gcg","x-genbank":"gen","x-hin":"hin","x-isostar":["istr","ist"],"x-jcamp-dx":["jdx","dx"],"x-kinemage":"kin","x-macmolecule":"mcm","x-macromodel-input":["mmd","mmod"],"x-mdl-molfile":"mol","x-mdl-rdfile":"rd","x-mdl-rxnfile":"rxn","x-mdl-sdfile":["sd","sdf"],"x-mdl-tgf":"tgf","x-mmcif":"mcif","x-mol2":"mol2","x-molconn-Z":"b","x-mopac-graph":"gpt","x-mopac-input":["mop","mopcrt","mpc","zmt"],"x-mopac-out":"moo","x-ncbi-asn1":"asn","x-ncbi-asn1-ascii":["prt","ent"],"x-ncbi-asn1-binary":["val","aso"],"x-pdb":["pdb","ent"],"x-rosdal":"ros","x-swissprot":"sw","x-vamas-iso14976":"vms","x-vmd":"vmd","x-xtel":"xtel","x-xyz":"xyz"},image:{gif:"gif",ief:"ief",jpeg:["jpeg","jpg","jpe"],pcx:"pcx",png:"png","svg+xml":["svg","svgz"],tiff:["tiff","tif"],"vnd.djvu":["djvu","djv"],"vnd.wap.wbmp":"wbmp","x-canon-cr2":"cr2","x-canon-crw":"crw","x-cmu-raster":"ras","x-coreldraw":"cdr","x-coreldrawpattern":"pat","x-coreldrawtemplate":"cdt","x-corelphotopaint":"cpt","x-epson-erf":"erf","x-icon":"ico","x-jg":"art","x-jng":"jng","x-nikon-nef":"nef","x-olympus-orf":"orf","x-photoshop":"psd","x-portable-anymap":"pnm","x-portable-bitmap":"pbm","x-portable-graymap":"pgm","x-portable-pixmap":"ppm","x-rgb":"rgb","x-xbitmap":"xbm","x-xpixmap":"xpm","x-xwindowdump":"xwd",bmp:"bmp",cgm:"cgm",g3fax:"g3",ktx:"ktx","prs.btif":"btif",sgi:"sgi","vnd.dece.graphic":["uvi","uvvi","uvg","uvvg"],"vnd.dwg":"dwg","vnd.dxf":"dxf","vnd.fastbidsheet":"fbs","vnd.fpx":"fpx","vnd.fst":"fst","vnd.fujixerox.edmics-mmr":"mmr","vnd.fujixerox.edmics-rlc":"rlc","vnd.ms-modi":"mdi","vnd.ms-photo":"wdp","vnd.net-fpx":"npx","vnd.xiff":"xif",webp:"webp","x-3ds":"3ds","x-cmx":"cmx","x-freehand":["fh","fhc","fh4","fh5","fh7"],"x-pict":["pic","pct"],"x-tga":"tga","cis-cod":"cod",pipeg:"jfif"},message:{rfc822:["eml","mime","mht","mhtml","nws"]},model:{iges:["igs","iges"],mesh:["msh","mesh","silo"],vrml:["wrl","vrml"],"x3d+vrml":["x3dv","x3dvz"],"x3d+xml":["x3d","x3dz"],"x3d+binary":["x3db","x3dbz"],"vnd.collada+xml":"dae","vnd.dwf":"dwf","vnd.gdl":"gdl","vnd.gtw":"gtw","vnd.mts":"mts","vnd.vtu":"vtu"},text:{"cache-manifest":["manifest","appcache"],calendar:["ics","icz","ifb"],css:"css",csv:"csv",h323:"323",html:["html","htm","shtml","stm"],iuls:"uls",mathml:"mml",plain:["txt","text","brf","conf","def","list","log","in","bas"],richtext:"rtx",scriptlet:["sct","wsc"],texmacs:["tm","ts"],"tab-separated-values":"tsv","vnd.sun.j2me.app-descriptor":"jad","vnd.wap.wml":"wml","vnd.wap.wmlscript":"wmls","x-bibtex":"bib","x-boo":"boo","x-c++hdr":["h++","hpp","hxx","hh"],"x-c++src":["c++","cpp","cxx","cc"],"x-component":"htc","x-dsrc":"d","x-diff":["diff","patch"],"x-haskell":"hs","x-java":"java","x-literate-haskell":"lhs","x-moc":"moc","x-pascal":["p","pas"],"x-pcs-gcd":"gcd","x-perl":["pl","pm"],"x-python":"py","x-scala":"scala","x-setext":"etx","x-tcl":["tcl","tk"],"x-tex":["tex","ltx","sty","cls"],"x-vcalendar":"vcs","x-vcard":"vcf",n3:"n3","prs.lines.tag":"dsc",sgml:["sgml","sgm"],troff:["t","tr","roff","man","me","ms"],turtle:"ttl","uri-list":["uri","uris","urls"],vcard:"vcard","vnd.curl":"curl","vnd.curl.dcurl":"dcurl","vnd.curl.scurl":"scurl","vnd.curl.mcurl":"mcurl","vnd.dvb.subtitle":"sub","vnd.fly":"fly","vnd.fmi.flexstor":"flx","vnd.graphviz":"gv","vnd.in3d.3dml":"3dml","vnd.in3d.spot":"spot","x-asm":["s","asm"],"x-c":["c","cc","cxx","cpp","h","hh","dic"],"x-fortran":["f","for","f77","f90"],"x-opml":"opml","x-nfo":"nfo","x-sfv":"sfv","x-uuencode":"uu",webviewhtml:"htt"},video:{avif:".avif","3gpp":"3gp",annodex:"axv",dl:"dl",dv:["dif","dv"],fli:"fli",gl:"gl",mpeg:["mpeg","mpg","mpe","m1v","m2v","mp2","mpa","mpv2"],mp4:["mp4","mp4v","mpg4"],quicktime:["qt","mov"],ogg:"ogv","vnd.mpegurl":["mxu","m4u"],"x-flv":"flv","x-la-asf":["lsf","lsx"],"x-mng":"mng","x-ms-asf":["asf","asx","asr"],"x-ms-wm":"wm","x-ms-wmv":"wmv","x-ms-wmx":"wmx","x-ms-wvx":"wvx","x-msvideo":"avi","x-sgi-movie":"movie","x-matroska":["mpv","mkv","mk3d","mks"],"3gpp2":"3g2",h261:"h261",h263:"h263",h264:"h264",jpeg:"jpgv",jpm:["jpm","jpgm"],mj2:["mj2","mjp2"],"vnd.dece.hd":["uvh","uvvh"],"vnd.dece.mobile":["uvm","uvvm"],"vnd.dece.pd":["uvp","uvvp"],"vnd.dece.sd":["uvs","uvvs"],"vnd.dece.video":["uvv","uvvv"],"vnd.dvb.file":"dvb","vnd.fvt":"fvt","vnd.ms-playready.media.pyv":"pyv","vnd.uvvu.mp4":["uvu","uvvu"],"vnd.vivo":"viv",webm:"webm","x-f4v":"f4v","x-m4v":"m4v","x-ms-vob":"vob","x-smv":"smv"},"x-conference":{"x-cooltalk":"ice"},"x-world":{"x-vrml":["vrm","vrml","wrl","flr","wrz","xaf","xof"]}},qe=(()=>{const e={};for(let t in Fe)if(Fe.hasOwnProperty(t))for(let n in Fe[t])if(Fe[t].hasOwnProperty(n)){const s=Fe[t][n];if("string"==typeof s)e[s]=t+"/"+n;else for(let i=0;i<s.length;i++)e[s[i]]=t+"/"+n}return e})();e.BlobReader=p,e.BlobWriter=l,e.Data64URIReader=d,e.Data64URIWriter=c,e.HttpRangeReader=h,e.HttpReader=m,e.Reader=i,e.TextReader=a,e.TextWriter=o,e.Uint8ArrayReader=class extends i{constructor(e){super(),this.array=e,this.size=e.length}readUint8Array(e,t){return this.array.slice(e,e+t)}},e.Uint8ArrayWriter=f,e.Writer=r,e.ZipReader=ge,e.ZipWriter=we,e.configure=function(e){ve=Object.assign({},ve,e)},e.fs=Ue,e.getMimeType=function(e){return e&&qe[e.split(".").pop().toLowerCase()]||"application/octet-stream"},e.initShimAsyncCodec=(e,t={})=>({ZipDeflate:xe(e.Deflate,t.deflate),ZipInflate:xe(e.Inflate,t.inflate)}),Object.defineProperty(e,"__esModule",{value:!0})})); |
@@ -1,1 +0,1 @@ | ||
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).zip={})}(this,(function(t){"use strict";const e="HTTP error ",n="text/plain";class i{constructor(){this.size=0}init(){this.initialized=!0}}class r extends i{}class s extends i{writeUint8Array(t){this.size+=t.length}}class a extends r{constructor(t){super(),this.blobReader=new d(new Blob([t],{type:n}))}init(){super.init(),this.blobReader.init(),this.size=this.blobReader.size}readUint8Array(t,e){return this.blobReader.readUint8Array(t,e)}}class o extends s{constructor(t){super(),this.encoding=t,this.blob=new Blob([],{type:n})}writeUint8Array(t){super.writeUint8Array(t),this.blob=new Blob([this.blob,t.buffer],{type:n})}getData(){const t=new FileReader;return new Promise(((e,n)=>{t.onload=t=>e(t.target.result),t.onerror=n,t.readAsText(this.blob,this.encoding)}))}}class c extends r{constructor(t){super(),this.dataURI=t;let e=t.length;for(;"="==t.charAt(e-1);)e--;this.dataStart=t.indexOf(",")+1,this.size=Math.floor(.75*(e-this.dataStart))}readUint8Array(t,e){const n=new Uint8Array(e),i=4*Math.floor(t/3),r=atob(this.dataURI.substring(i+this.dataStart,4*Math.ceil((t+e)/3)+this.dataStart)),s=t-3*Math.floor(i/4);for(let t=s;t<s+e;t++)n[t-s]=r.charCodeAt(t);return n}}class h extends s{constructor(t){super(),this.data="data:"+(t||"")+";base64,",this.pending=[]}writeUint8Array(t){super.writeUint8Array(t);let e=0,n=this.pending;const i=this.pending.length;for(this.pending="",e=0;e<3*Math.floor((i+t.length)/3)-i;e++)n+=String.fromCharCode(t[e]);for(;e<t.length;e++)this.pending+=String.fromCharCode(t[e]);n.length>2?this.data+=btoa(n):this.pending=n}getData(){return this.data+btoa(this.pending)}}class d extends r{constructor(t){super(),this.blob=t,this.size=t.size}readUint8Array(t,e){const n=new FileReader;return new Promise(((i,r)=>{n.onload=t=>i(new Uint8Array(t.target.result)),n.onerror=r,n.readAsArrayBuffer(this.blob.slice(t,t+e))}))}}class l extends s{constructor(t){super(),this.offset=0,this.contentType=t,this.blob=new Blob([],{type:t})}writeUint8Array(t){super.writeUint8Array(t),this.blob=new Blob([this.blob,t.buffer],{type:this.contentType}),this.offset=this.blob.size}getData(){return this.blob}}class u extends r{constructor(t){super(),this.url=t}async init(){if(super.init(),function(t){if("undefined"!=typeof document){const e=document.createElement("a");return e.href=t,"http:"==e.protocol||"https:"==e.protocol}return/^https?:\/\//i.test(t)}(this.url))return new Promise(((t,n)=>{const i=new XMLHttpRequest;i.addEventListener("load",(()=>{i.status<400?(this.size=Number(i.getResponseHeader("Content-Length")),this.size?t():f().then((()=>t())).catch(n)):n(e+(i.statusText||i.status)+".")}),!1),i.addEventListener("error",n,!1),i.open("HEAD",this.url),i.send()}));await f()}async readUint8Array(t,e){return this.data||await f(this,this.url),new Uint8Array(this.data.subarray(t,t+e))}}class p extends r{constructor(t){super(),this.url=t}init(){return super.init(),new Promise(((t,n)=>{const i=new XMLHttpRequest;i.addEventListener("load",(()=>{i.status<400?(this.size=Number(i.getResponseHeader("Content-Length")),"bytes"==i.getResponseHeader("Accept-Ranges")?t():n(new Error("HTTP Range not supported"))):n(e+(i.statusText||i.status)+".")}),!1),i.addEventListener("error",n,!1),i.open("HEAD",this.url),i.send()}))}readUint8Array(t,n){return new Promise(((i,r)=>{const s=new XMLHttpRequest;s.open("GET",this.url),s.responseType="arraybuffer",s.setRequestHeader("Range","bytes="+t+"-"+(t+n-1)),s.addEventListener("load",(()=>{s.status<400?i(new Uint8Array(s.response)):r(e+(s.statusText||s.status)+".")}),!1),s.addEventListener("error",r,!1),s.send()}))}}class g extends s{constructor(){super(),this.array=new Uint8Array(0)}writeUint8Array(t){super.writeUint8Array(t);const e=this.array;this.array=new Uint8Array(e.length+t.length),this.array.set(e),this.array.set(t,e.length)}getData(){return this.array}}function f(t,n){return new Promise(((i,r)=>{const s=new XMLHttpRequest;s.addEventListener("load",(()=>{s.status<400?(t.size||(t.size=Number(s.getResponseHeader("Content-Length"))||Number(s.response.byteLength)),t.data=new Uint8Array(s.response),i()):r(e+(s.statusText||s.status)+".")}),!1),s.addEventListener("error",r,!1),s.open("GET",n),s.responseType="arraybuffer",s.send()}))}class w{constructor(){this.crc=-1,this.table=(()=>{const t=[];for(let e=0;e<256;e++){let n=e;for(let t=0;t<8;t++)1&n?n=n>>>1^3988292384:n>>>=1;t[e]=n}return t})()}append(t){const e=this.table;let n=0|this.crc;for(let i=0,r=0|t.length;i<r;i++)n=n>>>8^e[255&(n^t[i])];this.crc=n}get(){return~this.crc}}const y="Invalid pasword",m=16,U="raw",b={name:"PBKDF2"},A={name:"HMAC"},z="SHA-1",E={name:"AES-CTR"},D=Object.assign({hash:A},b),x=Object.assign({iterations:1e3,hash:{name:z}},b),v=Object.assign({hash:z},A),R=Object.assign({length:m},E),B=["deriveBits"],F=["sign"],S=528,I=10,L=[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],M=crypto.subtle;class k{constructor(t,e){this.password=t,this.signed=e,this.input=e&&new Uint8Array(0),this.pendingInput=new Uint8Array(0)}async append(t){const e=async(r=0)=>{if(r+m<=i.length-I){const t=i.subarray(r,r+m),s=await M.decrypt(Object.assign({counter:this.counter},R),this.keys.decrypt,t);return T(this.counter),n.set(new Uint8Array(s),r),e(r+m)}return this.pendingInput=i.subarray(r),this.signed&&(this.input=W(this.input,t)),n};if(this.password){const e=t.subarray(0,18);await async function(t,e,n){t.counter=new Uint8Array(L);const i=e.subarray(0,16),r=e.subarray(16),s=(new TextEncoder).encode(n),a=await M.importKey(U,s,D,!1,B),o=await M.deriveBits(Object.assign({salt:i},x),a,528),c=new Uint8Array(o),h=c.subarray(64);if(t.keys={decrypt:await M.importKey(U,c.subarray(0,32),E,!0,["decrypt"]),authentication:await M.importKey(U,c.subarray(32,64),v,!1,F),passwordVerification:h},h[0]!=r[0]||h[1]!=r[1])throw new Error(y)}(this,e,this.password),this.password=null,t=t.subarray(18)}let n=new Uint8Array(t.length-I-(t.length-I)%m),i=t;return this.pendingInput.length&&(i=W(this.pendingInput,t),n=P(n,i.length-I-(i.length-I)%m)),e()}async flush(){const t=this.pendingInput,e=this.keys,n=t.subarray(0,t.length-I),i=t.subarray(t.length-I);let r=new Uint8Array(0);if(n.length){const t=await M.decrypt(Object.assign({counter:this.counter},R),e.decrypt,n);r=new Uint8Array(t)}let s=!0;if(this.signed){const t=await M.sign(A,e.authentication,this.input.subarray(0,this.input.length-I)),n=new Uint8Array(t);this.input=null;for(let t=0;t<I;t++)n[t]!=i[t]&&(s=!1)}return{valid:s,data:r}}}class C{constructor(t){this.password=t,this.output=new Uint8Array(0),this.pendingInput=new Uint8Array(0)}async append(t){const e=async(r=0)=>{if(r+m<=t.length){const s=t.subarray(r,r+m),a=await M.encrypt(Object.assign({counter:this.counter},R),this.keys.encrypt,s);return T(this.counter),i.set(new Uint8Array(a),r+n.length),e(r+m)}return this.pendingInput=t.subarray(r),this.output=W(this.output,i),i};let n=new Uint8Array(0);this.password&&(n=await async function(t,e){t.counter=new Uint8Array(L);const n=crypto.getRandomValues(new Uint8Array(16)),i=(new TextEncoder).encode(e),r=await M.importKey(U,i,D,!1,B),s=await M.deriveBits(Object.assign({salt:n},x),r,S),a=new Uint8Array(s);return t.keys={encrypt:await M.importKey(U,a.subarray(0,32),E,!0,["encrypt"]),authentication:await M.importKey(U,a.subarray(32,64),v,!1,F),passwordVerification:a.subarray(64)},W(n,t.keys.passwordVerification)}(this,this.password),this.password=null);let i=new Uint8Array(n.length+t.length-t.length%m);return i.set(n,0),this.pendingInput.length&&(t=W(this.pendingInput,t),i=P(i,t.length-t.length%m)),e()}async flush(){let t=new Uint8Array(0);if(this.pendingInput.length){const e=await M.encrypt(Object.assign({counter:this.counter},R),this.keys.encrypt,this.pendingInput);t=new Uint8Array(e),this.output=W(this.output,t)}const e=await M.sign(A,this.keys.authentication,this.output.subarray(18));this.output=null;const n=new Uint8Array(e).subarray(0,I);return{data:W(t,n),signature:n}}}function T(t){for(let e=0;e<16;e++){if(255!=t[e]){t[e]++;break}t[e]=0}}function W(t,e){let n=t;return t.length+e.length&&(n=new Uint8Array(t.length+e.length),n.set(t,0),n.set(e,t.length)),n}function P(t,e){if(e&&e>t.length){const n=t;(t=new Uint8Array(e)).set(n,0)}return t}const V="deflate",Z="inflate",j="Invalid signature";class H{constructor(t){this.signature=t.inputSignature,this.encrypted=Boolean(t.inputPassword),this.signed=t.inputSigned,this.compressed=t.inputCompressed,this.inflate=this.compressed&&new ZipInflate,this.crc32=this.signed&&this.signed&&new w,this.decrypt=this.encrypted&&new k(t.inputPassword)}async append(t){return this.encrypted&&(t=await this.decrypt.append(t)),this.compressed&&t.length&&(t=await this.inflate.append(t)),!this.encrypted&&this.signed&&this.crc32.append(t),t}async flush(){let t,e=new Uint8Array(0);if(this.encrypted){const t=await this.decrypt.flush();if(!t.valid)throw new Error(j);e=t.data}else if(this.signed){const e=new DataView(new Uint8Array(4).buffer);if(t=this.crc32.get(),e.setUint32(0,t),this.signature!=e.getUint32(0,!1))throw new Error(j)}return this.compressed&&(e=await this.inflate.append(e)||new Uint8Array(0),await this.inflate.flush()),{data:e,signature:t}}}class O{constructor(t){this.encrypted=t.outputEncrypted,this.signed=t.outputSigned,this.compressed=t.outputCompressed,this.deflate=this.compressed&&new ZipDeflate({level:t.level||5}),this.crc32=this.signed&&new w,this.encrypt=this.encrypted&&new C(t.outputPassword)}async append(t){let e=t;return this.compressed&&t.length&&(e=await this.deflate.append(t)),this.encrypted?e=await this.encrypt.append(e):this.signed&&this.crc32.append(t),e}async flush(){let t,e=new Uint8Array(0);if(this.compressed&&(e=await this.deflate.flush()||new Uint8Array(0)),this.encrypted){e=await this.encrypt.append(e);const n=await this.encrypt.flush();t=n.signature;const i=new Uint8Array(e.length+n.data.length);i.set(e,0),i.set(n.data,e.length),e=i}else this.signed&&(t=this.crc32.get());return{data:e,signature:t}}}const N="init",q="append",K="flush",X="message",G="z-worker.js",_={deflate:[G,"deflate.js"],inflate:[G,"inflate.js"]},Y={pool:[],pendingRequests:[]};function J(t,e){const n=Y.pool,i=!(e.inputCompressed||e.inputSigned||e.inputEncrypted||e.outputCompressed||e.outputSigned||e.outputEncrypted);let r;if(t.useWebWorkers&&!i){const n=e.codecType;if(null!=t.workerScripts&&null!=t.workerScriptsPath)throw new Error("Either workerScripts or workerScriptsPath may be set, not both");if(t.workerScripts){if(r=t.workerScripts[n],!Array.isArray(r))throw new Error("workerScripts."+n+" must be an array");s=r,r="undefined"!=typeof document?s.map((t=>new URL(t,document.baseURI).href)):s}else r=_[n].slice(0),r[0]=(t.workerScriptsPath||"")+r[0]}var s;if(n.length<t.maxWorkers){const t={worker:r&&new Worker(r[0]),busy:!0,options:e,scripts:r};return n.push(t),r?function(t){const e=t.worker,n=t.scripts.slice(1);let i;return e.addEventListener(X,a,!1),t.interface={append:async t=>r({type:q,data:t}),flush:async()=>r({type:K})},t.interface;async function r(e){return i||await s(Object.assign({type:N,options:t.options,scripts:n})),s(e)}function s(t){try{if(t.data)try{e.postMessage(t,[t.data.buffer])}catch(n){e.postMessage(t)}else e.postMessage(t)}catch(t){i.reject(t),e.removeEventListener(X,a,!1)}return new Promise(((t,e)=>i={resolve:t,reject:e}))}function a(n){const r=n.data;if(i){const n=r.error;if(n){const t=new Error(n.message);t.stack=n.stack,i.reject(t),e.removeEventListener(X,a,!1)}else r.type!=N&&r.type!=K&&r.type!=q||(r.type==K?(i.resolve({data:new Uint8Array(r.data),signature:r.signature}),i=null,function(t){if(t.busy=!1,Y.pendingRequests.length){const[{resolve:e,options:n,scripts:i}]=Y.pendingRequests.splice(0,1);t.busy=!0,t.options=n,t.scripts=i,e(t.interface)}else t.worker.terminate(),Y.pool=Y.pool.filter((e=>e!=t))}(t)):i.resolve(r.data&&new Uint8Array(r.data)))}}}(t):Q(t)}{const t=n.find((t=>!t.busy));return t?(t.busy=!0,t.options=e,t.scripts=r,r?t.interface:Q(t)):new Promise((t=>Y.pendingRequests.push({resolve:t,options:e,scripts:r})))}}async function Q(t){const e=(n=t.options).codecType.startsWith(V)?new O(n):n.codecType.startsWith(Z)?new H(n):void 0;var n;const i=e.flush.bind(e);return e.flush=async()=>{const e=await i();if(t.busy=!1,Y.pendingRequests.length){const[{resolve:e,options:n}]=Y.pendingRequests.splice(0,1);t.busy=!0,t.options=n,e(await Q(t))}else Y.pool=Y.pool.filter((e=>e!=t));return e},e}async function $(t,e,n,i,r,s,a){const o=Math.max(s.chunkSize,64);return async function s(c=0,h=0){const d=c*o;if(d<r){const l=await e.readUint8Array(d+i,Math.min(o,r-d)),u=await t.append(l);return h+=await tt(n,u),a.onprogress&&a.onprogress(d+l.length,r),s(c+1,h)}{const e=await t.flush();return h+=await tt(n,e.data),{signature:e.signature,length:h}}}()}async function tt(t,e){return e.length&&await t.writeUint8Array(e),e.length}const et="File format is not recognized",nt="End of central directory not found",it="Zip64 extra field not found",rt="Encryption not supported",st="Compression method not supported",at="utf-8",ot="windows-1252";class ct{constructor(t,e,n){this.reader=t,this.config=e,this.options=n}async getData(t,e={}){const n=this.reader;n.initialized||await n.init();const i=await n.readUint8Array(this.offset,30),r=new DataView(i.buffer),s=void 0===e.password?this.options.password:e.password;let a=s&&s.length&&s;if(1347093252!=r.getUint32(0,!1))throw"Local file header not found";const o=this.localDirectory={};ht(o,r,4),o.rawExtraField=i.subarray(this.offset+30+o.filenameLength,this.offset+30+o.filenameLength+o.extraFieldLength),dt(this,o,r,4);let c=this.offset+30+o.filenameLength+o.extraFieldLength;const h=this.bitFlag.encrypted&&o.bitFlag.encrypted;if(h&&!a)throw new Error("File contains encrypted entry");const d=await J(this.config,{codecType:Z,inputPassword:a,inputSigned:void 0===e.checkSignature?this.options.checkSignature:e.checkSignature,inputSignature:this.signature,inputCompressed:0!=this.compressionMethod,inputEncrypted:h});return t.initialized||await t.init(),await $(d,n,t,c,this.compressedSize,this.config,{onprogress:e.onprogress}),t.getData()}}function ht(t,e,n){t.version=e.getUint16(n,!0);const i=t.rawBitFlag=e.getUint16(n+2,!0);t.bitFlag={encrypted:1==(1&i),level:(6&i)>>1,dataDescriptor:8==(8&i),languageEncodingFlag:2048==(2048&i)},t.rawLastModDate=e.getUint32(n+6,!0),t.lastModDate=function(t){const e=(4294901760&t)>>16,n=65535&t;try{return new Date(1980+((65024&e)>>9),((480&e)>>5)-1,31&e,(63488&n)>>11,(2016&n)>>5,2*(31&n),0)}catch(t){}}(t.rawLastModDate),t.filenameLength=e.getUint16(n+22,!0),t.extraFieldLength=e.getUint16(n+24,!0)}function dt(t,e,n,i){let r,s,a;const o=e.rawExtraField,c=e.extraField=new Map,h=new DataView(new Uint8Array(o).buffer);let d=0;try{for(;d<o.length;){const t=h.getUint16(d,!0),e=h.getUint16(d+2,!0);c.set(t,{type:t,data:o.slice(d+4,d+4+e)}),d+=4+e}}catch(t){}const l=n.getUint16(i+4,!0);e.signature=n.getUint32(i+10,!0),e.uncompressedSize=n.getUint32(i+18,!0),e.compressedSize=n.getUint32(i+14,!0),r=e.extraFieldZip64=c.get(1),r&&function(t,e){e.zip64=!0;const n=new DataView(t.data.buffer);t.values=[];for(let e=0;e<Math.floor(t.data.length/8);e++)t.values.push(Number(n.getBigUint64(0+8*e,!0)));const i=["uncompressedSize","compressedSize","offset"],r=i.filter((t=>4294967295==e[t]));for(let e=0;e<r.length;e++)t[r[e]]=t.values[e];i.forEach((n=>{if(4294967295==e[n]){if(!t||void 0===t[n])throw new Error(it);e[n]=t&&t[n]}}))}(r,e),a=e.extraFieldUnicodePath=c.get(28789),a&&function(t,e,n){const i=new DataView(t.data.buffer);t.version=i.getUint8(0),t.signature=i.getUint32(1,!0);const r=new w;r.append(n.rawFilename);const s=new DataView(new Uint8Array(4).buffer);s.setUint32(0,r.get()),t.filename=(new TextDecoder).decode(t.data.subarray(5)),t.signature==s.getUint32(0,!1)&&(e.filename=t.filename)}(a,e,t),s=e.extraFieldAES=c.get(39169),s?function(t,e,n){if(t){if(99!=n)throw new Error(st);const i=new DataView(t.data.buffer);t.vendorVersion=i.getUint8(0),t.vendorId=i.getUint8(2);const r=i.getUint8(4);if(t.compressionMethod=i.getUint16(5,!0),3!=r)throw new Error(rt);e.compressionMethod=t.compressionMethod}else e.compressionMethod=n}(s,e,l):e.compressionMethod=l,8==e.compressionMethod&&(e.bitFlag.enhancedDeflating=16!=(16&e.rawBitFlag))}function lt(t,e){return new TextDecoder(e).decode(t)}function ut(t){return unescape(encodeURIComponent(t))}function pt(t){const e=[];for(let n=0;n<t.length;n++)e.push(t.charCodeAt(n));return e}const gt="function";function ft(t,e){return class{constructor(n){const i=t=>{if(this.pendingData){const e=this.pendingData;this.pendingData=new Uint8Array(e.length+t.length),this.pendingData.set(e,0),this.pendingData.set(t,e.length)}else this.pendingData=new Uint8Array(t)};if(this.codec=new t(Object.assign({},e,n)),typeof this.codec.onData==gt)this.codec.onData=i;else{if(typeof this.codec.on!=gt)throw new Error("Cannot register the callback function");this.codec.on("data",i)}}async append(t){return this.codec.push(t),n(this)}async flush(){return this.codec.push(new Uint8Array(0),!0),n(this)}};function n(t){if(t.pendingData){const e=t.pendingData;return t.pendingData=null,e}return new Uint8Array(0)}}const wt={chunkSize:524288,maxWorkers:"undefined"!=typeof navigator&&navigator.hardwareConcurrency||2,workerScriptsPath:void 0,useWebWorkers:!0};let yt=Object.assign({},wt);class mt extends class{constructor(t,e={},n={}){this.reader=t,this.options=e,this.config=n}async getEntries(){const t=this.reader;t.initialized||await t.init();const e=await async function(t,e,n,i){if(t.size<n)throw new Error(et);const r=n+i;let s=n,a=await o(s);a||(a=await o(Math.min(r,t.size)));if(!a)throw new Error(nt);return a;async function o(i){const r=t.size-i,s=await t.readUint8Array(r,i);for(let t=s.length-n;t>=0;t--)if(s[t]==e[0]&&s[t+1]==e[1]&&s[t+2]==e[2]&&s[t+3]==e[3])return{offset:r,buffer:s.slice(t,t+n).buffer}}}(t,[80,75,5,6],22,65536);let n,i=new DataView(e.buffer),r=i.getUint32(16,!0),s=i.getUint16(8,!0);if(4294967295==r||65535==s){n=!0;const i=await t.readUint8Array(e.offset-20,20),a=new DataView(i.buffer);if(1347094023!=Number(a.getUint32(0,!1)))throw new Error("End of Zip64 central directory not found");r=Number(a.getBigUint64(8,!0));const o=await t.readUint8Array(r,56),c=new DataView(o.buffer);if(1347094022!=Number(c.getUint32(0,!1)))throw new Error("End of Zip64 central directory locator not found");s=Number(c.getBigUint64(24,!0)),r-=Number(c.getBigUint64(40,!0))}if(r<0||!n&&(r>=t.size||s>=65535))throw new Error(et);const a=await t.readUint8Array(r,t.size-r);i=new DataView(a.buffer);const o=[];let c=0;for(let t=0;t<s;t++){const t=new ct(this.reader,this.config,this.options);if(1347092738!=i.getUint32(c,!1))throw new Error("Central directory header not found");if(t.compressedSize=0,t.uncompressedSize=0,ht(t,i,c+6),t.commentLength=i.getUint16(c+32,!0),t.directory=16==(16&i.getUint8(c+38)),t.offset=i.getUint32(c+42,!0),t.rawFilename=a.subarray(c+46,c+46+t.filenameLength),t.filename=lt(t.rawFilename,t.bitFlag.languageEncodingFlag?at:this.options.filenameEncoding||ot),t.directory||"/"!=t.filename.charAt(t.filename.length-1)||(t.directory=!0),t.rawExtraField=a.subarray(c+46+t.filenameLength,c+46+t.filenameLength+t.extraFieldLength),dt(t,t,i,c+6),0!=t.compressionMethod&&8!=t.compressionMethod)throw new Error(st);t.rawComment=a.subarray(c+46+t.filenameLength+t.extraFieldLength,c+46+t.filenameLength+t.extraFieldLength+t.commentLength),t.comment=lt(t.rawComment,t.bitFlag.languageEncodingFlag?at:this.options.commentEncoding||ot),o.push(t),c+=46+t.filenameLength+t.extraFieldLength+t.commentLength}return o}async close(){}}{constructor(t,e){super(t,e,yt)}}class Ut extends class{constructor(t,e={},n={}){this.writer=t,this.options=e,this.config=n,this.files=new Map,this.offset=t.size,this.zip64=e.zip64}async add(t,e,n={}){if(t=t.trim(),n.directory&&"/"!=t.charAt(t.length-1)&&(t+="/"),this.files.has(t))throw new Error("File already exists");if(n.comment=pt(ut(n.comment||"")),n.comment>65536)throw new Error("File entry comment exceeds 64KB");n.zip64=n.zip64||this.zip64,await async function(t,e,n,i){const r=t.files,s=t.writer;let a;r.set(e,null);try{let o,c;try{i.bufferedWrite||t.options.bufferedWrite||t.lockWrite?(o=new g,o.init()):(t.lockWrite=new Promise((t=>a=t)),s.initialized||await s.init(),o=s),(t.offset>=4294967295||n&&(n.size>=4294967295||t.offset+n.size>=4294967295))&&(i.zip64=!0),c=await async function(t,e,n,i,r,s){const a=pt(ut(t)),o=s.lastModDate||new Date,c=new Uint8Array(26),h=new DataView(c.buffer),d=void 0===s.password?r.password:s.password,l=d&&d.length&&d,u=void 0===s.level?r.level:s.level,p=0!==u&&!s.directory,g=void 0===d||!d.length,f=s.zip64,w={zip64:f,headerArray:c,directory:s.directory,filename:a,comment:s.comment,extraFieldZip64:f?new Uint8Array(28):new Uint8Array(0),extraFieldAES:l?new Uint8Array([1,153,7,0,2,0,65,69,3,0,0]):new Uint8Array(0),rawExtraField:new Uint8Array(0)},y=s.extraField;if(y){let t=4,e=0;y.forEach((e=>t+=e.length));const n=w.rawExtraField=new Uint8Array(t);y.forEach(((t,i)=>{n.set(new Uint16Array([i]),e),n.set(new Uint16Array([t.length]),e+2),n.set(t,e+4),e+=4+t.length}))}s.bitFlag=8,s.version=(void 0===s.version?r.version:s.version)||20,s.compressionMethod=0,p&&(s.compressionMethod=8);f&&(s.version=s.version>45?s.version:45);l&&(s.version=s.version>51?s.version:51,s.bitFlag=9,s.compressionMethod=99,p&&(w.extraFieldAES[9]=8));h.setUint16(0,s.version,!0),h.setUint16(2,s.bitFlag,!0),h.setUint16(4,s.compressionMethod,!0),h.setUint16(6,(o.getHours()<<6|o.getMinutes())<<5|o.getSeconds()/2,!0),h.setUint16(8,(o.getFullYear()-1980<<4|o.getMonth()+1)<<5|o.getDate(),!0),h.setUint16(22,a.length,!0),h.setUint16(24,0,!0);const m=new Uint8Array(30+a.length);let U;if(new DataView(m.buffer).setUint32(0,1347093252),m.set(c,4),m.set(a,30),e){e.initialized||await e.init();const t=await J(i,{codecType:V,level:u,outputPassword:d,outputSigned:g,outputCompressed:p,outputEncrypted:Boolean(d)});await n.writeUint8Array(m),U=await $(t,e,n,0,e.size,i,{onprogress:s.onprogress}),w.compressedSize=U.length}else await n.writeUint8Array(m);const b=new Uint8Array(f?24:16),A=new DataView(b.buffer);if(A.setUint32(0,1347094280),e)if(l||void 0===U.signature||(h.setUint32(10,U.signature,!0),A.setUint32(4,U.signature,!0)),f){h.setUint32(14,4294967295,!0),A.setBigUint64(8,BigInt(w.compressedSize),!0),h.setUint32(18,4294967295,!0),A.setBigUint64(16,BigInt(e.size),!0);const t=new DataView(w.extraFieldZip64.buffer);t.setUint16(0,1,!0),t.setUint16(2,24,!0),t.setBigUint64(4,BigInt(e.size),!0),t.setBigUint64(12,BigInt(w.compressedSize),!0)}else h.setUint32(14,w.compressedSize,!0),A.setUint32(8,w.compressedSize,!0),h.setUint32(18,e.size,!0),A.setUint32(12,e.size,!0);return await n.writeUint8Array(b),w.length=m.length+(U?U.length:0)+b.length,w}(e,n,o,t.config,t.options,i)}catch(t){throw r.delete(e),t}if(r.set(e,c),o!=s&&(t.lockWrite&&await t.lockWrite,await s.writeUint8Array(o.getData())),c.offset=t.offset,c.zip64){new DataView(c.extraFieldZip64.buffer).setBigUint64(20,BigInt(c.offset),!0)}t.offset+=c.length}finally{a&&(t.lockWrite=null,a())}}(this,t,e,n)}async close(t){const e=this.writer,n=this.files;let i=0,r=0,s=this.offset,a=n.size;for(const[,t]of n)r+=46+t.filename.length+t.comment.length+t.extraFieldZip64.length+t.extraFieldAES.length+t.rawExtraField.length;(s+r>=4294967295||a>=65535)&&(this.zip64=!0);const o=new Uint8Array(r+(this.zip64?98:22)),c=new DataView(o.buffer);for(const[,t]of n){const e=t.filename,n=t.extraFieldZip64,r=t.extraFieldAES,s=n.length+r.length+t.rawExtraField.length;c.setUint32(i,1347092738),t.zip64?c.setUint16(i+4,11520):c.setUint16(i+4,5120),o.set(t.headerArray,i+6),c.setUint16(i+30,s,!0),c.setUint16(i+32,t.comment.length,!0),t.directory&&c.setUint8(i+38,16),t.zip64?c.setUint32(i+42,4294967295,!0):c.setUint32(i+42,t.offset,!0),o.set(e,i+46),o.set(n,i+46+e.length),o.set(r,i+46+e.length+n.length),o.set(t.rawExtraField,46+e.length+n.length+r.length),o.set(t.comment,i+46+e.length+s),i+=46+e.length+s+t.comment.length}if(this.zip64&&(c.setUint32(i,1347094022),c.setBigUint64(i+4,BigInt(44),!0),c.setUint16(i+12,45,!0),c.setUint16(i+14,45,!0),c.setBigUint64(i+24,BigInt(a),!0),c.setBigUint64(i+32,BigInt(a),!0),c.setBigUint64(i+40,BigInt(r),!0),c.setBigUint64(i+48,BigInt(s),!0),c.setUint32(i+56,1347094023),c.setBigUint64(i+64,BigInt(s+r),!0),c.setUint32(i+72,1,!0),a=65535,s=4294967295,i+=76),c.setUint32(i,1347093766),c.setUint16(i+8,a,!0),c.setUint16(i+10,a,!0),c.setUint32(i+12,r,!0),c.setUint32(i+16,s,!0),t&&t.length){if(!(t.length<=65536))throw new Error("Zip file comment exceeds 64KB");c.setUint16(i+20,t.length,!0)}return await e.writeUint8Array(o),t&&t.length&&await e.writeUint8Array(t),e.getData()}}{constructor(t,e){super(t,e,yt)}}const bt=524288;class At{constructor(t,e,n,i){if(t.root&&i&&i.getChildByName(e))throw new Error("Entry filename already exists");n||(n={}),this.fs=t,this.name=e,this.id=t.entries.length,this.parent=i,this.children=[],this.zipVersion=n.zipVersion||20,this.uncompressedSize=0,t.entries.push(this),i&&this.parent.children.push(this)}moveTo(t){if(!t.directory)throw"Target entry is not a directory";if(t.isDescendantOf(this))throw"Entry is a ancestor of target entry";if(this!=t){if(t.getChildByName(this.name))throw"Entry filename already exists";Bt(this),this.parent=t,t.children.push(this)}}getFullname(){let t=this.name,e=this.parent;for(;e;)t=(e.name?e.name+"/":"")+t,e=e.parent;return t}isDescendantOf(t){let e=this.parent;for(;e&&e.id!=t.id;)e=e.parent;return Boolean(e)}}class zt extends At{constructor(t,e,n,i){super(t,e,n,i),this.Reader=n.Reader,this.Writer=n.Writer,this.data=n.data,n.getData&&(this.getData=n.getData)}async getData(t,e={}){return!t||t.constructor==this.Writer&&this.data?this.data:(this.reader||(this.reader=new this.Reader(this.data)),await this.reader.init(),await t.init(),this.uncompressedSize=this.reader.size,async function(t,e,n){return i();async function i(r=0){const s=r*bt;if(n.onprogress&&n.onprogress(s,t.size),s<t.size){const n=await t.readUint8Array(s,Math.min(bt,t.size-s));return await e.writeUint8Array(n),i(r+1)}return e.getData()}}(this.reader,t,e))}getText(t,e){return this.getData(new o(t),e)}getBlob(t,e){return this.getData(new l(t),e)}getData64URI(t,e){return this.getData(new h(t),e)}}class Et extends At{constructor(t,e,n,i){super(t,e,n,i),this.directory=!0}addDirectory(t){return St(this,t,null,!0)}addText(t,e){return St(this,t,{data:e,Reader:a,Writer:o})}addBlob(t,e){return St(this,t,{data:e,Reader:d,Writer:l})}addData64URI(t,e){return St(this,t,{data:e,Reader:c,Writer:h})}addHttpContent(t,e,n={}){return St(this,t,{data:e,Reader:n.useRangeHeader?p:u})}addFileEntry(t){!async function(t,e){e.isDirectory?await i(t,e):await new Promise(((n,i)=>{e.file((i=>{t.addBlob(e.name,i),n()}),i)}));function n(t){return new Promise(((e,n)=>{let i=[];function r(t){t.readEntries((n=>{n.length?(i=i.concat(n),r(t)):e(i)}),n)}t.isDirectory&&r(t.createReader()),t.isFile&&e(i)}))}async function i(t,e){const r=await n(e);for(const e of r)e.isDirectory&&await i(t.addDirectory(e.name)),await new Promise(((n,i)=>{e.isFile&&e.file((i=>{const r=t.addBlob(e.name,i);r.uncompressedSize=i.size,n(r)}),i)}))}}(this,t)}async addData(t,e){return St(this,t,e)}async importBlob(t,e={}){await this.importZip(new d(t),e)}async importData64URI(t,e={}){await this.importZip(new c(t),e)}async importHttpContent(t,e={}){await this.importZip(e.useRangeHeader?new p(t):new u(t),e)}async exportBlob(t={}){return this.exportZip(new l("application/zip"),t)}async exportData64URI(t={}){return this.exportZip(new h("application/zip"),t)}async importZip(t,e){await t.init();const n=new mt(t),i=await n.getEntries();let r=0;const s=xt(i,"compressedSize");i.forEach((t=>{let n=this,i=t.filename.split("/"),a=i.pop();if(i.forEach((t=>n=n.getChildByName(t)||new Et(this.fs,t,null,n))),!t.directory){let i=r;St(n,a,{data:t,Reader:vt(Object.assign({},e,{onprogress:t=>{e.onprogress&&e.onprogress(i+t,s)}}))}),r+=t.compressedSize}}))}async exportZip(t,e){await Rt(this);const n=new Ut(t);return await async function(t,e,n,i){let r=0;async function s(t,e){async function a(){let a=0;for(const o of e.children){let e=r;await t.add(o.getFullname(),o.reader,Object.assign({directory:o.directory,version:o.zipVersion},i,{onprogress:t=>{i.onprogress&&i.onprogress(e+a+t,n)}})),r+=o.uncompressedSize,await s(t,o),a++}}await a()}await s(t,e)}(n,this,xt([this],"uncompressedSize"),e),await n.close(),t.getData()}getChildByName(t){for(let e=0;e<this.children.length;e++){const n=this.children[e];if(n.name==t)return n}}}const Dt={FS:class{constructor(){Ft(this)}remove(t){Bt(t),this.entries[t.id]=null}find(t){const e=t.split("/");let n=this.root;for(let t=0;n&&t<e.length;t++)n=n.getChildByName(e[t]);return n}getById(t){return this.entries[t]}async importBlob(t){Ft(this),await this.root.importBlob(t)}async importData64URI(t){Ft(this),await this.root.importData64URI(t)}async importHttpContent(t,e){this.entries=[],this.root=new Et(this),await this.root.importHttpContent(t,e)}async exportBlob(t){return this.root.exportBlob(t)}async exportData64URI(t){return this.root.exportData64URI(t)}},ZipDirectoryEntry:Et,ZipFileEntry:zt};function xt(t,e){let n=0;return t.forEach((function t(i){n+=i[e],i.children&&i.children.forEach(t)})),n}function vt(t){return class{constructor(t){this.entry=t,this.size=0}async readUint8Array(e,n){if(!this.blobReader){const e=await this.entry.getData(new l,t);this.data=e,this.blobReader=new d(e)}return this.blobReader.readUint8Array(e,n)}async init(){this.size=this.entry.uncompressedSize}}}async function Rt(t){if(t.children.length)for(const e of t.children)e.directory?await Rt(e):(e.reader=new e.Reader(e.data),await e.reader.init(),e.uncompressedSize=e.reader.size)}function Bt(t){const e=t.parent.children;e.forEach(((n,i)=>{n.id==t.id&&e.splice(i,1)}))}function Ft(t){t.entries=[],t.root=new Et(t)}function St(t,e,n,i){if(t.directory)return i?new Et(t.fs,e,n,t):new zt(t.fs,e,n,t);throw"Parent entry is not a directory"}t.BlobReader=d,t.BlobWriter=l,t.Data64URIReader=c,t.Data64URIWriter=h,t.HttpRangeReader=p,t.HttpReader=u,t.Reader=r,t.TextReader=a,t.TextWriter=o,t.Uint8ArrayReader=class extends r{constructor(t){super(),this.array=t,this.size=t.length}readUint8Array(t,e){return this.array.slice(t,t+e)}},t.Uint8ArrayWriter=g,t.Writer=s,t.ZipReader=mt,t.ZipWriter=Ut,t.configure=function(t){yt=Object.assign({},yt,t)},t.fs=Dt,t.getMimeType=function(){return"application/octet-stream"},t.initShimAsyncCodec=(t,e={})=>({ZipDeflate:ft(t.Deflate,e.deflate),ZipInflate:ft(t.Inflate,e.inflate)}),Object.defineProperty(t,"__esModule",{value:!0})})); | ||
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).zip={})}(this,(function(t){"use strict";const e="HTTP error ",n="text/plain";class i{constructor(){this.size=0}init(){this.initialized=!0}}class r extends i{}class s extends i{writeUint8Array(t){this.size+=t.length}}class a extends r{constructor(t){super(),this.blobReader=new d(new Blob([t],{type:n}))}init(){super.init(),this.blobReader.init(),this.size=this.blobReader.size}readUint8Array(t,e){return this.blobReader.readUint8Array(t,e)}}class o extends s{constructor(t){super(),this.encoding=t,this.blob=new Blob([],{type:n})}writeUint8Array(t){super.writeUint8Array(t),this.blob=new Blob([this.blob,t.buffer],{type:n})}getData(){const t=new FileReader;return new Promise(((e,n)=>{t.onload=t=>e(t.target.result),t.onerror=n,t.readAsText(this.blob,this.encoding)}))}}class c extends r{constructor(t){super(),this.dataURI=t;let e=t.length;for(;"="==t.charAt(e-1);)e--;this.dataStart=t.indexOf(",")+1,this.size=Math.floor(.75*(e-this.dataStart))}readUint8Array(t,e){const n=new Uint8Array(e),i=4*Math.floor(t/3),r=atob(this.dataURI.substring(i+this.dataStart,4*Math.ceil((t+e)/3)+this.dataStart)),s=t-3*Math.floor(i/4);for(let t=s;t<s+e;t++)n[t-s]=r.charCodeAt(t);return n}}class h extends s{constructor(t){super(),this.data="data:"+(t||"")+";base64,",this.pending=[]}writeUint8Array(t){super.writeUint8Array(t);let e=0,n=this.pending;const i=this.pending.length;for(this.pending="",e=0;e<3*Math.floor((i+t.length)/3)-i;e++)n+=String.fromCharCode(t[e]);for(;e<t.length;e++)this.pending+=String.fromCharCode(t[e]);n.length>2?this.data+=btoa(n):this.pending=n}getData(){return this.data+btoa(this.pending)}}class d extends r{constructor(t){super(),this.blob=t,this.size=t.size}readUint8Array(t,e){const n=new FileReader;return new Promise(((i,r)=>{n.onload=t=>i(new Uint8Array(t.target.result)),n.onerror=r,n.readAsArrayBuffer(this.blob.slice(t,t+e))}))}}class l extends s{constructor(t){super(),this.offset=0,this.contentType=t,this.blob=new Blob([],{type:t})}writeUint8Array(t){super.writeUint8Array(t),this.blob=new Blob([this.blob,t.buffer],{type:this.contentType}),this.offset=this.blob.size}getData(){return this.blob}}class u extends r{constructor(t){super(),this.url=t}async init(){if(super.init(),function(t){if("undefined"!=typeof document){const e=document.createElement("a");return e.href=t,"http:"==e.protocol||"https:"==e.protocol}return/^https?:\/\//i.test(t)}(this.url))return new Promise(((t,n)=>{const i=new XMLHttpRequest;i.addEventListener("load",(()=>{i.status<400?(this.size=Number(i.getResponseHeader("Content-Length")),this.size?t():f().then((()=>t())).catch(n)):n(e+(i.statusText||i.status)+".")}),!1),i.addEventListener("error",n,!1),i.open("HEAD",this.url),i.send()}));await f()}async readUint8Array(t,e){return this.data||await f(this,this.url),new Uint8Array(this.data.subarray(t,t+e))}}class p extends r{constructor(t){super(),this.url=t}init(){return super.init(),new Promise(((t,n)=>{const i=new XMLHttpRequest;i.addEventListener("load",(()=>{i.status<400?(this.size=Number(i.getResponseHeader("Content-Length")),"bytes"==i.getResponseHeader("Accept-Ranges")?t():n(new Error("HTTP Range not supported"))):n(e+(i.statusText||i.status)+".")}),!1),i.addEventListener("error",n,!1),i.open("HEAD",this.url),i.send()}))}readUint8Array(t,n){return new Promise(((i,r)=>{const s=new XMLHttpRequest;s.open("GET",this.url),s.responseType="arraybuffer",s.setRequestHeader("Range","bytes="+t+"-"+(t+n-1)),s.addEventListener("load",(()=>{s.status<400?i(new Uint8Array(s.response)):r(e+(s.statusText||s.status)+".")}),!1),s.addEventListener("error",r,!1),s.send()}))}}class g extends s{constructor(){super(),this.array=new Uint8Array(0)}writeUint8Array(t){super.writeUint8Array(t);const e=this.array;this.array=new Uint8Array(e.length+t.length),this.array.set(e),this.array.set(t,e.length)}getData(){return this.array}}function f(t,n){return new Promise(((i,r)=>{const s=new XMLHttpRequest;s.addEventListener("load",(()=>{s.status<400?(t.size||(t.size=Number(s.getResponseHeader("Content-Length"))||Number(s.response.byteLength)),t.data=new Uint8Array(s.response),i()):r(e+(s.statusText||s.status)+".")}),!1),s.addEventListener("error",r,!1),s.open("GET",n),s.responseType="arraybuffer",s.send()}))}class w{constructor(){this.crc=-1,this.table=(()=>{const t=[];for(let e=0;e<256;e++){let n=e;for(let t=0;t<8;t++)1&n?n=n>>>1^3988292384:n>>>=1;t[e]=n}return t})()}append(t){const e=this.table;let n=0|this.crc;for(let i=0,r=0|t.length;i<r;i++)n=n>>>8^e[255&(n^t[i])];this.crc=n}get(){return~this.crc}}const y="Invalid pasword",m=16,U="raw",b={name:"PBKDF2"},A={name:"HMAC"},z="SHA-1",E={name:"AES-CTR"},D=Object.assign({hash:A},b),x=Object.assign({iterations:1e3,hash:{name:z}},b),v=Object.assign({hash:z},A),R=Object.assign({length:m},E),B=["deriveBits"],F=["sign"],S=528,I=10,L=[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],M=crypto.subtle;class k{constructor(t,e){this.password=t,this.signed=e,this.input=e&&new Uint8Array(0),this.pendingInput=new Uint8Array(0)}async append(t){const e=async(r=0)=>{if(r+m<=i.length-I){const t=i.subarray(r,r+m),s=await M.decrypt(Object.assign({counter:this.counter},R),this.keys.decrypt,t);return C(this.counter),n.set(new Uint8Array(s),r),e(r+m)}return this.pendingInput=i.subarray(r),this.signed&&(this.input=W(this.input,t)),n};if(this.password){const e=t.subarray(0,18);await async function(t,e,n){t.counter=new Uint8Array(L);const i=e.subarray(0,16),r=e.subarray(16),s=(new TextEncoder).encode(n),a=await M.importKey(U,s,D,!1,B),o=await M.deriveBits(Object.assign({salt:i},x),a,528),c=new Uint8Array(o),h=c.subarray(64);if(t.keys={decrypt:await M.importKey(U,c.subarray(0,32),E,!0,["decrypt"]),authentication:await M.importKey(U,c.subarray(32,64),v,!1,F),passwordVerification:h},h[0]!=r[0]||h[1]!=r[1])throw new Error(y)}(this,e,this.password),this.password=null,t=t.subarray(18)}let n=new Uint8Array(t.length-I-(t.length-I)%m),i=t;return this.pendingInput.length&&(i=W(this.pendingInput,t),n=P(n,i.length-I-(i.length-I)%m)),e()}async flush(){const t=this.pendingInput,e=this.keys,n=t.subarray(0,t.length-I),i=t.subarray(t.length-I);let r=new Uint8Array(0);if(n.length){const t=await M.decrypt(Object.assign({counter:this.counter},R),e.decrypt,n);r=new Uint8Array(t)}let s=!0;if(this.signed){const t=await M.sign(A,e.authentication,this.input.subarray(0,this.input.length-I)),n=new Uint8Array(t);this.input=null;for(let t=0;t<I;t++)n[t]!=i[t]&&(s=!1)}return{valid:s,data:r}}}class T{constructor(t){this.password=t,this.output=new Uint8Array(0),this.pendingInput=new Uint8Array(0)}async append(t){const e=async(r=0)=>{if(r+m<=t.length){const s=t.subarray(r,r+m),a=await M.encrypt(Object.assign({counter:this.counter},R),this.keys.encrypt,s);return C(this.counter),i.set(new Uint8Array(a),r+n.length),e(r+m)}return this.pendingInput=t.subarray(r),this.output=W(this.output,i),i};let n=new Uint8Array(0);this.password&&(n=await async function(t,e){t.counter=new Uint8Array(L);const n=crypto.getRandomValues(new Uint8Array(16)),i=(new TextEncoder).encode(e),r=await M.importKey(U,i,D,!1,B),s=await M.deriveBits(Object.assign({salt:n},x),r,S),a=new Uint8Array(s);return t.keys={encrypt:await M.importKey(U,a.subarray(0,32),E,!0,["encrypt"]),authentication:await M.importKey(U,a.subarray(32,64),v,!1,F),passwordVerification:a.subarray(64)},W(n,t.keys.passwordVerification)}(this,this.password),this.password=null);let i=new Uint8Array(n.length+t.length-t.length%m);return i.set(n,0),this.pendingInput.length&&(t=W(this.pendingInput,t),i=P(i,t.length-t.length%m)),e()}async flush(){let t=new Uint8Array(0);if(this.pendingInput.length){const e=await M.encrypt(Object.assign({counter:this.counter},R),this.keys.encrypt,this.pendingInput);t=new Uint8Array(e),this.output=W(this.output,t)}const e=await M.sign(A,this.keys.authentication,this.output.subarray(18));this.output=null;const n=new Uint8Array(e).subarray(0,I);return{data:W(t,n),signature:n}}}function C(t){for(let e=0;e<16;e++){if(255!=t[e]){t[e]++;break}t[e]=0}}function W(t,e){let n=t;return t.length+e.length&&(n=new Uint8Array(t.length+e.length),n.set(t,0),n.set(e,t.length)),n}function P(t,e){if(e&&e>t.length){const n=t;(t=new Uint8Array(e)).set(n,0)}return t}const V="deflate",Z="inflate",j="Invalid signature";class H{constructor(t){this.signature=t.inputSignature,this.encrypted=Boolean(t.inputPassword),this.signed=t.inputSigned,this.compressed=t.inputCompressed,this.inflate=this.compressed&&new ZipInflate,this.crc32=this.signed&&this.signed&&new w,this.decrypt=this.encrypted&&new k(t.inputPassword)}async append(t){return this.encrypted&&(t=await this.decrypt.append(t)),this.compressed&&t.length&&(t=await this.inflate.append(t)),!this.encrypted&&this.signed&&this.crc32.append(t),t}async flush(){let t,e=new Uint8Array(0);if(this.encrypted){const t=await this.decrypt.flush();if(!t.valid)throw new Error(j);e=t.data}else if(this.signed){const e=new DataView(new Uint8Array(4).buffer);if(t=this.crc32.get(),e.setUint32(0,t),this.signature!=e.getUint32(0,!1))throw new Error(j)}return this.compressed&&(e=await this.inflate.append(e)||new Uint8Array(0),await this.inflate.flush()),{data:e,signature:t}}}class O{constructor(t){this.encrypted=t.outputEncrypted,this.signed=t.outputSigned,this.compressed=t.outputCompressed,this.deflate=this.compressed&&new ZipDeflate({level:t.level||5}),this.crc32=this.signed&&new w,this.encrypt=this.encrypted&&new T(t.outputPassword)}async append(t){let e=t;return this.compressed&&t.length&&(e=await this.deflate.append(t)),this.encrypted?e=await this.encrypt.append(e):this.signed&&this.crc32.append(t),e}async flush(){let t,e=new Uint8Array(0);if(this.compressed&&(e=await this.deflate.flush()||new Uint8Array(0)),this.encrypted){e=await this.encrypt.append(e);const n=await this.encrypt.flush();t=n.signature;const i=new Uint8Array(e.length+n.data.length);i.set(e,0),i.set(n.data,e.length),e=i}else this.signed&&(t=this.crc32.get());return{data:e,signature:t}}}const N="init",q="append",K="flush",X="message",G="z-worker.js",_={deflate:[G,"deflate.js"],inflate:[G,"inflate.js"]},Y={pool:[],pendingRequests:[]};function J(t,e){const n=Y.pool;let i;if(t.useWebWorkers){const n=e.codecType;if(null!=t.workerScripts&&null!=t.workerScriptsPath)throw new Error("Either workerScripts or workerScriptsPath may be set, not both");if(t.workerScripts){if(i=t.workerScripts[n],!Array.isArray(i))throw new Error("workerScripts."+n+" must be an array");r=i,i="undefined"!=typeof document?r.map((t=>new URL(t,document.baseURI).href)):r}else i=_[n].slice(0),i[0]=(t.workerScriptsPath||"")+i[0]}var r;if(n.length<t.maxWorkers){const t={worker:i&&new Worker(i[0]),busy:!0,options:e,scripts:i};return n.push(t),i?function(t){const e=t.worker;let n;return e.addEventListener(X,s,!1),t.interface={append:async t=>i({type:q,data:t}),flush:async()=>i({type:K})},t.interface;async function i(e){if(!n){const e=t.scripts.slice(1);await r(Object.assign({type:N,options:t.options,scripts:e}))}return r(e)}function r(t){try{if(t.data)try{e.postMessage(t,[t.data.buffer])}catch(n){e.postMessage(t)}else e.postMessage(t)}catch(t){n.reject(t),e.removeEventListener(X,s,!1)}return new Promise(((t,e)=>n={resolve:t,reject:e}))}function s(i){const r=i.data;if(n){const i=r.error;if(i){const t=new Error(i.message);t.stack=i.stack,n.reject(t),e.removeEventListener(X,s,!1)}else r.type!=N&&r.type!=K&&r.type!=q||(r.type==K?(n.resolve({data:new Uint8Array(r.data),signature:r.signature}),n=null,function(t){if(t.busy=!1,Y.pendingRequests.length){const[{resolve:e,options:n,scripts:i}]=Y.pendingRequests.splice(0,1);t.busy=!0,t.options=n,t.scripts=i,e(t.interface)}else t.worker.terminate(),Y.pool=Y.pool.filter((e=>e!=t))}(t)):n.resolve(r.data&&new Uint8Array(r.data)))}}}(t):Q(t)}{const t=n.find((t=>!t.busy));return t?(t.busy=!0,t.options=e,t.scripts=i,i?t.interface:Q(t)):new Promise((t=>Y.pendingRequests.push({resolve:t,options:e,scripts:i})))}}async function Q(t){const e=(n=t.options).codecType.startsWith(V)?new O(n):n.codecType.startsWith(Z)?new H(n):void 0;var n;const i=e.flush.bind(e);return e.flush=async()=>{const e=await i();if(t.busy=!1,Y.pendingRequests.length){const[{resolve:e,options:n}]=Y.pendingRequests.splice(0,1);t.busy=!0,t.options=n,e(await Q(t))}else Y.pool=Y.pool.filter((e=>e!=t));return e},e}async function $(t,e,n,i,r,s,a){const o=Math.max(s.chunkSize,64);return async function s(c=0,h=0){const d=c*o;if(d<r){const l=await e.readUint8Array(d+i,Math.min(o,r-d)),u=await t.append(l);return h+=await tt(n,u),a.onprogress&&a.onprogress(d+l.length,r),s(c+1,h)}{const e=await t.flush();return h+=await tt(n,e.data),{signature:e.signature,length:h}}}()}async function tt(t,e){return e.length&&await t.writeUint8Array(e),e.length}const et="File format is not recognized",nt="End of central directory not found",it="Zip64 extra field not found",rt="Encryption not supported",st="Compression method not supported",at="utf-8",ot="windows-1252";class ct{constructor(t,e,n){this.reader=t,this.config=e,this.options=n}async getData(t,e={}){const n=this.reader;n.initialized||await n.init();const i=await n.readUint8Array(this.offset,30),r=new DataView(i.buffer),s=void 0===e.password?this.options.password:e.password;let a=s&&s.length&&s;if(1347093252!=r.getUint32(0,!1))throw"Local file header not found";const o=this.localDirectory={};ht(o,r,4),o.rawExtraField=i.subarray(this.offset+30+o.filenameLength,this.offset+30+o.filenameLength+o.extraFieldLength),dt(this,o,r,4);let c=this.offset+30+o.filenameLength+o.extraFieldLength;const h=this.bitFlag.encrypted&&o.bitFlag.encrypted;if(h&&!a)throw new Error("File contains encrypted entry");const d=await J(this.config,{codecType:Z,inputPassword:a,inputSigned:void 0===e.checkSignature?this.options.checkSignature:e.checkSignature,inputSignature:this.signature,inputCompressed:0!=this.compressionMethod,inputEncrypted:h});return t.initialized||await t.init(),await $(d,n,t,c,this.compressedSize,this.config,{onprogress:e.onprogress}),t.getData()}}function ht(t,e,n){t.version=e.getUint16(n,!0);const i=t.rawBitFlag=e.getUint16(n+2,!0);t.bitFlag={encrypted:1==(1&i),level:(6&i)>>1,dataDescriptor:8==(8&i),languageEncodingFlag:2048==(2048&i)},t.rawLastModDate=e.getUint32(n+6,!0),t.lastModDate=function(t){const e=(4294901760&t)>>16,n=65535&t;try{return new Date(1980+((65024&e)>>9),((480&e)>>5)-1,31&e,(63488&n)>>11,(2016&n)>>5,2*(31&n),0)}catch(t){}}(t.rawLastModDate),t.filenameLength=e.getUint16(n+22,!0),t.extraFieldLength=e.getUint16(n+24,!0)}function dt(t,e,n,i){let r,s,a;const o=e.rawExtraField,c=e.extraField=new Map,h=new DataView(new Uint8Array(o).buffer);let d=0;try{for(;d<o.length;){const t=h.getUint16(d,!0),e=h.getUint16(d+2,!0);c.set(t,{type:t,data:o.slice(d+4,d+4+e)}),d+=4+e}}catch(t){}const l=n.getUint16(i+4,!0);e.signature=n.getUint32(i+10,!0),e.uncompressedSize=n.getUint32(i+18,!0),e.compressedSize=n.getUint32(i+14,!0),r=e.extraFieldZip64=c.get(1),r&&function(t,e){e.zip64=!0;const n=new DataView(t.data.buffer);t.values=[];for(let e=0;e<Math.floor(t.data.length/8);e++)t.values.push(Number(n.getBigUint64(0+8*e,!0)));const i=["uncompressedSize","compressedSize","offset"],r=i.filter((t=>4294967295==e[t]));for(let e=0;e<r.length;e++)t[r[e]]=t.values[e];i.forEach((n=>{if(4294967295==e[n]){if(!t||void 0===t[n])throw new Error(it);e[n]=t&&t[n]}}))}(r,e),a=e.extraFieldUnicodePath=c.get(28789),a&&function(t,e,n){const i=new DataView(t.data.buffer);t.version=i.getUint8(0),t.signature=i.getUint32(1,!0);const r=new w;r.append(n.rawFilename);const s=new DataView(new Uint8Array(4).buffer);s.setUint32(0,r.get()),t.filename=(new TextDecoder).decode(t.data.subarray(5)),t.signature==s.getUint32(0,!1)&&(e.filename=t.filename)}(a,e,t),s=e.extraFieldAES=c.get(39169),s?function(t,e,n){if(t){if(99!=n)throw new Error(st);const i=new DataView(t.data.buffer);t.vendorVersion=i.getUint8(0),t.vendorId=i.getUint8(2);const r=i.getUint8(4);if(t.compressionMethod=i.getUint16(5,!0),3!=r)throw new Error(rt);e.compressionMethod=t.compressionMethod}else e.compressionMethod=n}(s,e,l):e.compressionMethod=l,8==e.compressionMethod&&(e.bitFlag.enhancedDeflating=16!=(16&e.rawBitFlag))}function lt(t,e){return new TextDecoder(e).decode(t)}function ut(t){return unescape(encodeURIComponent(t))}function pt(t){const e=[];for(let n=0;n<t.length;n++)e.push(t.charCodeAt(n));return e}const gt="function";function ft(t,e){return class{constructor(n){const i=t=>{if(this.pendingData){const e=this.pendingData;this.pendingData=new Uint8Array(e.length+t.length),this.pendingData.set(e,0),this.pendingData.set(t,e.length)}else this.pendingData=new Uint8Array(t)};if(this.codec=new t(Object.assign({},e,n)),typeof this.codec.onData==gt)this.codec.onData=i;else{if(typeof this.codec.on!=gt)throw new Error("Cannot register the callback function");this.codec.on("data",i)}}async append(t){return this.codec.push(t),n(this)}async flush(){return this.codec.push(new Uint8Array(0),!0),n(this)}};function n(t){if(t.pendingData){const e=t.pendingData;return t.pendingData=null,e}return new Uint8Array(0)}}const wt={chunkSize:524288,maxWorkers:"undefined"!=typeof navigator&&navigator.hardwareConcurrency||2,workerScriptsPath:void 0,useWebWorkers:!0};let yt=Object.assign({},wt);class mt extends class{constructor(t,e={},n={}){this.reader=t,this.options=e,this.config=n}async getEntries(){const t=this.reader;t.initialized||await t.init();const e=await async function(t,e,n,i){if(t.size<n)throw new Error(et);const r=n+i;let s=n,a=await o(s);a||(a=await o(Math.min(r,t.size)));if(!a)throw new Error(nt);return a;async function o(i){const r=t.size-i,s=await t.readUint8Array(r,i);for(let t=s.length-n;t>=0;t--)if(s[t]==e[0]&&s[t+1]==e[1]&&s[t+2]==e[2]&&s[t+3]==e[3])return{offset:r,buffer:s.slice(t,t+n).buffer}}}(t,[80,75,5,6],22,65536);let n,i=new DataView(e.buffer),r=i.getUint32(16,!0),s=i.getUint16(8,!0);if(4294967295==r||65535==s){n=!0;const i=await t.readUint8Array(e.offset-20,20),a=new DataView(i.buffer);if(1347094023!=Number(a.getUint32(0,!1)))throw new Error("End of Zip64 central directory not found");r=Number(a.getBigUint64(8,!0));const o=await t.readUint8Array(r,56),c=new DataView(o.buffer);if(1347094022!=Number(c.getUint32(0,!1)))throw new Error("End of Zip64 central directory locator not found");s=Number(c.getBigUint64(24,!0)),r-=Number(c.getBigUint64(40,!0))}if(r<0||!n&&(r>=t.size||s>=65535))throw new Error(et);const a=await t.readUint8Array(r,t.size-r);i=new DataView(a.buffer);const o=[];let c=0;for(let t=0;t<s;t++){const t=new ct(this.reader,this.config,this.options);if(1347092738!=i.getUint32(c,!1))throw new Error("Central directory header not found");if(t.compressedSize=0,t.uncompressedSize=0,ht(t,i,c+6),t.commentLength=i.getUint16(c+32,!0),t.directory=16==(16&i.getUint8(c+38)),t.offset=i.getUint32(c+42,!0),t.rawFilename=a.subarray(c+46,c+46+t.filenameLength),t.filename=lt(t.rawFilename,t.bitFlag.languageEncodingFlag?at:this.options.filenameEncoding||ot),t.directory||"/"!=t.filename.charAt(t.filename.length-1)||(t.directory=!0),t.rawExtraField=a.subarray(c+46+t.filenameLength,c+46+t.filenameLength+t.extraFieldLength),dt(t,t,i,c+6),0!=t.compressionMethod&&8!=t.compressionMethod)throw new Error(st);t.rawComment=a.subarray(c+46+t.filenameLength+t.extraFieldLength,c+46+t.filenameLength+t.extraFieldLength+t.commentLength),t.comment=lt(t.rawComment,t.bitFlag.languageEncodingFlag?at:this.options.commentEncoding||ot),o.push(t),c+=46+t.filenameLength+t.extraFieldLength+t.commentLength}return o}async close(){}}{constructor(t,e){super(t,e,yt)}}class Ut extends class{constructor(t,e={},n={}){this.writer=t,this.options=e,this.config=n,this.files=new Map,this.offset=t.size,this.zip64=e.zip64}async add(t,e,n={}){if(t=t.trim(),n.directory&&"/"!=t.charAt(t.length-1)&&(t+="/"),this.files.has(t))throw new Error("File already exists");if(n.comment=pt(ut(n.comment||"")),n.comment>65536)throw new Error("File entry comment exceeds 64KB");n.zip64=n.zip64||this.zip64,await async function(t,e,n,i){const r=t.files,s=t.writer;let a;r.set(e,null);try{let o,c;try{i.bufferedWrite||t.options.bufferedWrite||t.lockWrite?(o=new g,o.init()):(t.lockWrite=new Promise((t=>a=t)),s.initialized||await s.init(),o=s),(t.offset>=4294967295||n&&(n.size>=4294967295||t.offset+n.size>=4294967295))&&(i.zip64=!0),c=await async function(t,e,n,i,r,s){const a=pt(ut(t)),o=s.lastModDate||new Date,c=new Uint8Array(26),h=new DataView(c.buffer),d=void 0===s.password?r.password:s.password,l=d&&d.length&&d,u=void 0===s.level?r.level:s.level,p=0!==u&&!s.directory,g=void 0===d||!d.length,f=s.zip64,w={zip64:f,headerArray:c,directory:s.directory,filename:a,comment:s.comment,extraFieldZip64:f?new Uint8Array(28):new Uint8Array(0),extraFieldAES:l?new Uint8Array([1,153,7,0,2,0,65,69,3,0,0]):new Uint8Array(0),rawExtraField:new Uint8Array(0)},y=s.extraField;if(y){let t=4,e=0;y.forEach((e=>t+=e.length));const n=w.rawExtraField=new Uint8Array(t);y.forEach(((t,i)=>{n.set(new Uint16Array([i]),e),n.set(new Uint16Array([t.length]),e+2),n.set(t,e+4),e+=4+t.length}))}s.bitFlag=8,s.version=(void 0===s.version?r.version:s.version)||20,s.compressionMethod=0,p&&(s.compressionMethod=8);f&&(s.version=s.version>45?s.version:45);l&&(s.version=s.version>51?s.version:51,s.bitFlag=9,s.compressionMethod=99,p&&(w.extraFieldAES[9]=8));h.setUint16(0,s.version,!0),h.setUint16(2,s.bitFlag,!0),h.setUint16(4,s.compressionMethod,!0),h.setUint16(6,(o.getHours()<<6|o.getMinutes())<<5|o.getSeconds()/2,!0),h.setUint16(8,(o.getFullYear()-1980<<4|o.getMonth()+1)<<5|o.getDate(),!0),h.setUint16(22,a.length,!0),h.setUint16(24,0,!0);const m=new Uint8Array(30+a.length);let U;if(new DataView(m.buffer).setUint32(0,1347093252),m.set(c,4),m.set(a,30),e){e.initialized||await e.init();const t=await J(i,{codecType:V,level:u,outputPassword:d,outputSigned:g,outputCompressed:p,outputEncrypted:Boolean(d)});await n.writeUint8Array(m),U=await $(t,e,n,0,e.size,i,{onprogress:s.onprogress}),w.compressedSize=U.length}else await n.writeUint8Array(m);const b=new Uint8Array(f?24:16),A=new DataView(b.buffer);if(A.setUint32(0,1347094280),e)if(l||void 0===U.signature||(h.setUint32(10,U.signature,!0),A.setUint32(4,U.signature,!0)),f){h.setUint32(14,4294967295,!0),A.setBigUint64(8,BigInt(w.compressedSize),!0),h.setUint32(18,4294967295,!0),A.setBigUint64(16,BigInt(e.size),!0);const t=new DataView(w.extraFieldZip64.buffer);t.setUint16(0,1,!0),t.setUint16(2,24,!0),t.setBigUint64(4,BigInt(e.size),!0),t.setBigUint64(12,BigInt(w.compressedSize),!0)}else h.setUint32(14,w.compressedSize,!0),A.setUint32(8,w.compressedSize,!0),h.setUint32(18,e.size,!0),A.setUint32(12,e.size,!0);return await n.writeUint8Array(b),w.length=m.length+(U?U.length:0)+b.length,w}(e,n,o,t.config,t.options,i)}catch(t){throw r.delete(e),t}if(r.set(e,c),o!=s&&(t.lockWrite&&await t.lockWrite,await s.writeUint8Array(o.getData())),c.offset=t.offset,c.zip64){new DataView(c.extraFieldZip64.buffer).setBigUint64(20,BigInt(c.offset),!0)}t.offset+=c.length}finally{a&&(t.lockWrite=null,a())}}(this,t,e,n)}async close(t){const e=this.writer,n=this.files;let i=0,r=0,s=this.offset,a=n.size;for(const[,t]of n)r+=46+t.filename.length+t.comment.length+t.extraFieldZip64.length+t.extraFieldAES.length+t.rawExtraField.length;(s+r>=4294967295||a>=65535)&&(this.zip64=!0);const o=new Uint8Array(r+(this.zip64?98:22)),c=new DataView(o.buffer);for(const[,t]of n){const e=t.filename,n=t.extraFieldZip64,r=t.extraFieldAES,s=n.length+r.length+t.rawExtraField.length;c.setUint32(i,1347092738),t.zip64?c.setUint16(i+4,11520):c.setUint16(i+4,5120),o.set(t.headerArray,i+6),c.setUint16(i+30,s,!0),c.setUint16(i+32,t.comment.length,!0),t.directory&&c.setUint8(i+38,16),t.zip64?c.setUint32(i+42,4294967295,!0):c.setUint32(i+42,t.offset,!0),o.set(e,i+46),o.set(n,i+46+e.length),o.set(r,i+46+e.length+n.length),o.set(t.rawExtraField,46+e.length+n.length+r.length),o.set(t.comment,i+46+e.length+s),i+=46+e.length+s+t.comment.length}if(this.zip64&&(c.setUint32(i,1347094022),c.setBigUint64(i+4,BigInt(44),!0),c.setUint16(i+12,45,!0),c.setUint16(i+14,45,!0),c.setBigUint64(i+24,BigInt(a),!0),c.setBigUint64(i+32,BigInt(a),!0),c.setBigUint64(i+40,BigInt(r),!0),c.setBigUint64(i+48,BigInt(s),!0),c.setUint32(i+56,1347094023),c.setBigUint64(i+64,BigInt(s+r),!0),c.setUint32(i+72,1,!0),a=65535,s=4294967295,i+=76),c.setUint32(i,1347093766),c.setUint16(i+8,a,!0),c.setUint16(i+10,a,!0),c.setUint32(i+12,r,!0),c.setUint32(i+16,s,!0),t&&t.length){if(!(t.length<=65536))throw new Error("Zip file comment exceeds 64KB");c.setUint16(i+20,t.length,!0)}return await e.writeUint8Array(o),t&&t.length&&await e.writeUint8Array(t),e.getData()}}{constructor(t,e){super(t,e,yt)}}const bt=524288;class At{constructor(t,e,n,i){if(t.root&&i&&i.getChildByName(e))throw new Error("Entry filename already exists");n||(n={}),this.fs=t,this.name=e,this.id=t.entries.length,this.parent=i,this.children=[],this.zipVersion=n.zipVersion||20,this.uncompressedSize=0,t.entries.push(this),i&&this.parent.children.push(this)}moveTo(t){if(!t.directory)throw"Target entry is not a directory";if(t.isDescendantOf(this))throw"Entry is a ancestor of target entry";if(this!=t){if(t.getChildByName(this.name))throw"Entry filename already exists";Bt(this),this.parent=t,t.children.push(this)}}getFullname(){let t=this.name,e=this.parent;for(;e;)t=(e.name?e.name+"/":"")+t,e=e.parent;return t}isDescendantOf(t){let e=this.parent;for(;e&&e.id!=t.id;)e=e.parent;return Boolean(e)}}class zt extends At{constructor(t,e,n,i){super(t,e,n,i),this.Reader=n.Reader,this.Writer=n.Writer,this.data=n.data,n.getData&&(this.getData=n.getData)}async getData(t,e={}){return!t||t.constructor==this.Writer&&this.data?this.data:(this.reader||(this.reader=new this.Reader(this.data)),await this.reader.init(),await t.init(),this.uncompressedSize=this.reader.size,async function(t,e,n){return i();async function i(r=0){const s=r*bt;if(n.onprogress&&n.onprogress(s,t.size),s<t.size){const n=await t.readUint8Array(s,Math.min(bt,t.size-s));return await e.writeUint8Array(n),i(r+1)}return e.getData()}}(this.reader,t,e))}getText(t,e){return this.getData(new o(t),e)}getBlob(t,e){return this.getData(new l(t),e)}getData64URI(t,e){return this.getData(new h(t),e)}}class Et extends At{constructor(t,e,n,i){super(t,e,n,i),this.directory=!0}addDirectory(t){return St(this,t,null,!0)}addText(t,e){return St(this,t,{data:e,Reader:a,Writer:o})}addBlob(t,e){return St(this,t,{data:e,Reader:d,Writer:l})}addData64URI(t,e){return St(this,t,{data:e,Reader:c,Writer:h})}addHttpContent(t,e,n={}){return St(this,t,{data:e,Reader:n.useRangeHeader?p:u})}addFileEntry(t){!async function(t,e){e.isDirectory?await i(t,e):await new Promise(((n,i)=>{e.file((i=>{t.addBlob(e.name,i),n()}),i)}));function n(t){return new Promise(((e,n)=>{let i=[];function r(t){t.readEntries((n=>{n.length?(i=i.concat(n),r(t)):e(i)}),n)}t.isDirectory&&r(t.createReader()),t.isFile&&e(i)}))}async function i(t,e){const r=await n(e);for(const e of r)e.isDirectory&&await i(t.addDirectory(e.name)),await new Promise(((n,i)=>{e.isFile&&e.file((i=>{const r=t.addBlob(e.name,i);r.uncompressedSize=i.size,n(r)}),i)}))}}(this,t)}async addData(t,e){return St(this,t,e)}async importBlob(t,e={}){await this.importZip(new d(t),e)}async importData64URI(t,e={}){await this.importZip(new c(t),e)}async importHttpContent(t,e={}){await this.importZip(e.useRangeHeader?new p(t):new u(t),e)}async exportBlob(t={}){return this.exportZip(new l("application/zip"),t)}async exportData64URI(t={}){return this.exportZip(new h("application/zip"),t)}async importZip(t,e){await t.init();const n=new mt(t),i=await n.getEntries();let r=0;const s=xt(i,"compressedSize");i.forEach((t=>{let n=this,i=t.filename.split("/"),a=i.pop();if(i.forEach((t=>n=n.getChildByName(t)||new Et(this.fs,t,null,n))),!t.directory){let i=r;St(n,a,{data:t,Reader:vt(Object.assign({},e,{onprogress:t=>{e.onprogress&&e.onprogress(i+t,s)}}))}),r+=t.compressedSize}}))}async exportZip(t,e){await Rt(this);const n=new Ut(t);return await async function(t,e,n,i){let r=0;async function s(t,e){async function a(){let a=0;for(const o of e.children){let e=r;await t.add(o.getFullname(),o.reader,Object.assign({directory:o.directory,version:o.zipVersion},i,{onprogress:t=>{i.onprogress&&i.onprogress(e+a+t,n)}})),r+=o.uncompressedSize,await s(t,o),a++}}await a()}await s(t,e)}(n,this,xt([this],"uncompressedSize"),e),await n.close(),t.getData()}getChildByName(t){for(let e=0;e<this.children.length;e++){const n=this.children[e];if(n.name==t)return n}}}const Dt={FS:class{constructor(){Ft(this)}remove(t){Bt(t),this.entries[t.id]=null}find(t){const e=t.split("/");let n=this.root;for(let t=0;n&&t<e.length;t++)n=n.getChildByName(e[t]);return n}getById(t){return this.entries[t]}async importBlob(t){Ft(this),await this.root.importBlob(t)}async importData64URI(t){Ft(this),await this.root.importData64URI(t)}async importHttpContent(t,e){this.entries=[],this.root=new Et(this),await this.root.importHttpContent(t,e)}async exportBlob(t){return this.root.exportBlob(t)}async exportData64URI(t){return this.root.exportData64URI(t)}},ZipDirectoryEntry:Et,ZipFileEntry:zt};function xt(t,e){let n=0;return t.forEach((function t(i){n+=i[e],i.children&&i.children.forEach(t)})),n}function vt(t){return class{constructor(t){this.entry=t,this.size=0}async readUint8Array(e,n){if(!this.blobReader){const e=await this.entry.getData(new l,t);this.data=e,this.blobReader=new d(e)}return this.blobReader.readUint8Array(e,n)}async init(){this.size=this.entry.uncompressedSize}}}async function Rt(t){if(t.children.length)for(const e of t.children)e.directory?await Rt(e):(e.reader=new e.Reader(e.data),await e.reader.init(),e.uncompressedSize=e.reader.size)}function Bt(t){const e=t.parent.children;e.forEach(((n,i)=>{n.id==t.id&&e.splice(i,1)}))}function Ft(t){t.entries=[],t.root=new Et(t)}function St(t,e,n,i){if(t.directory)return i?new Et(t.fs,e,n,t):new zt(t.fs,e,n,t);throw"Parent entry is not a directory"}t.BlobReader=d,t.BlobWriter=l,t.Data64URIReader=c,t.Data64URIWriter=h,t.HttpRangeReader=p,t.HttpReader=u,t.Reader=r,t.TextReader=a,t.TextWriter=o,t.Uint8ArrayReader=class extends r{constructor(t){super(),this.array=t,this.size=t.length}readUint8Array(t,e){return this.array.slice(t,t+e)}},t.Uint8ArrayWriter=g,t.Writer=s,t.ZipReader=mt,t.ZipWriter=Ut,t.configure=function(t){yt=Object.assign({},yt,t)},t.fs=Dt,t.getMimeType=function(){return"application/octet-stream"},t.initShimAsyncCodec=(t,e={})=>({ZipDeflate:ft(t.Deflate,e.deflate),ZipInflate:ft(t.Inflate,e.inflate)}),Object.defineProperty(t,"__esModule",{value:!0})})); |
@@ -1,1 +0,1 @@ | ||
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).zip={})}(this,(function(t){"use strict";const e="HTTP error ",n="text/plain";class i{constructor(){this.size=0}init(){this.initialized=!0}}class r extends i{}class s extends i{writeUint8Array(t){this.size+=t.length}}class a extends r{constructor(t){super(),this.blob=t,this.size=t.size}readUint8Array(t,e){const n=new FileReader;return new Promise(((i,r)=>{n.onload=t=>i(new Uint8Array(t.target.result)),n.onerror=r,n.readAsArrayBuffer(this.blob.slice(t,t+e))}))}}class o extends s{constructor(){super(),this.array=new Uint8Array(0)}writeUint8Array(t){super.writeUint8Array(t);const e=this.array;this.array=new Uint8Array(e.length+t.length),this.array.set(e),this.array.set(t,e.length)}getData(){return this.array}}function c(t,n){return new Promise(((i,r)=>{const s=new XMLHttpRequest;s.addEventListener("load",(()=>{s.status<400?(t.size||(t.size=Number(s.getResponseHeader("Content-Length"))||Number(s.response.byteLength)),t.data=new Uint8Array(s.response),i()):r(e+(s.statusText||s.status)+".")}),!1),s.addEventListener("error",r,!1),s.open("GET",n),s.responseType="arraybuffer",s.send()}))}class h{constructor(){this.crc=-1,this.table=(()=>{const t=[];for(let e=0;e<256;e++){let n=e;for(let t=0;t<8;t++)1&n?n=n>>>1^3988292384:n>>>=1;t[e]=n}return t})()}append(t){const e=this.table;let n=0|this.crc;for(let i=0,r=0|t.length;i<r;i++)n=n>>>8^e[255&(n^t[i])];this.crc=n}get(){return~this.crc}}const l="Invalid pasword",d=16,u="raw",p={name:"PBKDF2"},g={name:"HMAC"},f="SHA-1",w={name:"AES-CTR"},y=Object.assign({hash:g},p),U=Object.assign({iterations:1e3,hash:{name:f}},p),m=Object.assign({hash:f},g),b=Object.assign({length:d},w),A=["deriveBits"],E=["sign"],R=528,D=10,v=[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],x=crypto.subtle;class z{constructor(t,e){this.password=t,this.signed=e,this.input=e&&new Uint8Array(0),this.pendingInput=new Uint8Array(0)}async append(t){const e=async(r=0)=>{if(r+d<=i.length-D){const t=i.subarray(r,r+d),s=await x.decrypt(Object.assign({counter:this.counter},b),this.keys.decrypt,t);return S(this.counter),n.set(new Uint8Array(s),r),e(r+d)}return this.pendingInput=i.subarray(r),this.signed&&(this.input=L(this.input,t)),n};if(this.password){const e=t.subarray(0,18);await async function(t,e,n){t.counter=new Uint8Array(v);const i=e.subarray(0,16),r=e.subarray(16),s=(new TextEncoder).encode(n),a=await x.importKey(u,s,y,!1,A),o=await x.deriveBits(Object.assign({salt:i},U),a,528),c=new Uint8Array(o),h=c.subarray(64);if(t.keys={decrypt:await x.importKey(u,c.subarray(0,32),w,!0,["decrypt"]),authentication:await x.importKey(u,c.subarray(32,64),m,!1,E),passwordVerification:h},h[0]!=r[0]||h[1]!=r[1])throw new Error(l)}(this,e,this.password),this.password=null,t=t.subarray(18)}let n=new Uint8Array(t.length-D-(t.length-D)%d),i=t;return this.pendingInput.length&&(i=L(this.pendingInput,t),n=I(n,i.length-D-(i.length-D)%d)),e()}async flush(){const t=this.pendingInput,e=this.keys,n=t.subarray(0,t.length-D),i=t.subarray(t.length-D);let r=new Uint8Array(0);if(n.length){const t=await x.decrypt(Object.assign({counter:this.counter},b),e.decrypt,n);r=new Uint8Array(t)}let s=!0;if(this.signed){const t=await x.sign(g,e.authentication,this.input.subarray(0,this.input.length-D)),n=new Uint8Array(t);this.input=null;for(let t=0;t<D;t++)n[t]!=i[t]&&(s=!1)}return{valid:s,data:r}}}class F{constructor(t){this.password=t,this.output=new Uint8Array(0),this.pendingInput=new Uint8Array(0)}async append(t){const e=async(r=0)=>{if(r+d<=t.length){const s=t.subarray(r,r+d),a=await x.encrypt(Object.assign({counter:this.counter},b),this.keys.encrypt,s);return S(this.counter),i.set(new Uint8Array(a),r+n.length),e(r+d)}return this.pendingInput=t.subarray(r),this.output=L(this.output,i),i};let n=new Uint8Array(0);this.password&&(n=await async function(t,e){t.counter=new Uint8Array(v);const n=crypto.getRandomValues(new Uint8Array(16)),i=(new TextEncoder).encode(e),r=await x.importKey(u,i,y,!1,A),s=await x.deriveBits(Object.assign({salt:n},U),r,R),a=new Uint8Array(s);return t.keys={encrypt:await x.importKey(u,a.subarray(0,32),w,!0,["encrypt"]),authentication:await x.importKey(u,a.subarray(32,64),m,!1,E),passwordVerification:a.subarray(64)},L(n,t.keys.passwordVerification)}(this,this.password),this.password=null);let i=new Uint8Array(n.length+t.length-t.length%d);return i.set(n,0),this.pendingInput.length&&(t=L(this.pendingInput,t),i=I(i,t.length-t.length%d)),e()}async flush(){let t=new Uint8Array(0);if(this.pendingInput.length){const e=await x.encrypt(Object.assign({counter:this.counter},b),this.keys.encrypt,this.pendingInput);t=new Uint8Array(e),this.output=L(this.output,t)}const e=await x.sign(g,this.keys.authentication,this.output.subarray(18));this.output=null;const n=new Uint8Array(e).subarray(0,D);return{data:L(t,n),signature:n}}}function S(t){for(let e=0;e<16;e++){if(255!=t[e]){t[e]++;break}t[e]=0}}function L(t,e){let n=t;return t.length+e.length&&(n=new Uint8Array(t.length+e.length),n.set(t,0),n.set(e,t.length)),n}function I(t,e){if(e&&e>t.length){const n=t;(t=new Uint8Array(e)).set(n,0)}return t}const T="deflate",M="inflate",_="Invalid signature";class B{constructor(t){this.signature=t.inputSignature,this.encrypted=Boolean(t.inputPassword),this.signed=t.inputSigned,this.compressed=t.inputCompressed,this.inflate=this.compressed&&new ZipInflate,this.crc32=this.signed&&this.signed&&new h,this.decrypt=this.encrypted&&new z(t.inputPassword)}async append(t){return this.encrypted&&(t=await this.decrypt.append(t)),this.compressed&&t.length&&(t=await this.inflate.append(t)),!this.encrypted&&this.signed&&this.crc32.append(t),t}async flush(){let t,e=new Uint8Array(0);if(this.encrypted){const t=await this.decrypt.flush();if(!t.valid)throw new Error(_);e=t.data}else if(this.signed){const e=new DataView(new Uint8Array(4).buffer);if(t=this.crc32.get(),e.setUint32(0,t),this.signature!=e.getUint32(0,!1))throw new Error(_)}return this.compressed&&(e=await this.inflate.append(e)||new Uint8Array(0),await this.inflate.flush()),{data:e,signature:t}}}class O{constructor(t){this.encrypted=t.outputEncrypted,this.signed=t.outputSigned,this.compressed=t.outputCompressed,this.deflate=this.compressed&&new ZipDeflate({level:t.level||5}),this.crc32=this.signed&&new h,this.encrypt=this.encrypted&&new F(t.outputPassword)}async append(t){let e=t;return this.compressed&&t.length&&(e=await this.deflate.append(t)),this.encrypted?e=await this.encrypt.append(e):this.signed&&this.crc32.append(t),e}async flush(){let t,e=new Uint8Array(0);if(this.compressed&&(e=await this.deflate.flush()||new Uint8Array(0)),this.encrypted){e=await this.encrypt.append(e);const n=await this.encrypt.flush();t=n.signature;const i=new Uint8Array(e.length+n.data.length);i.set(e,0),i.set(n.data,e.length),e=i}else this.signed&&(t=this.crc32.get());return{data:e,signature:t}}}const k="init",C="append",N="flush",P="message",V="z-worker.js",j={deflate:[V,"deflate.js"],inflate:[V,"inflate.js"]},W={pool:[],pendingRequests:[]};function H(t,e){const n=W.pool,i=!(e.inputCompressed||e.inputSigned||e.inputEncrypted||e.outputCompressed||e.outputSigned||e.outputEncrypted);let r;if(t.useWebWorkers&&!i){const n=e.codecType;if(null!=t.workerScripts&&null!=t.workerScriptsPath)throw new Error("Either workerScripts or workerScriptsPath may be set, not both");if(t.workerScripts){if(r=t.workerScripts[n],!Array.isArray(r))throw new Error("workerScripts."+n+" must be an array");s=r,r="undefined"!=typeof document?s.map((t=>new URL(t,document.baseURI).href)):s}else r=j[n].slice(0),r[0]=(t.workerScriptsPath||"")+r[0]}var s;if(n.length<t.maxWorkers){const t={worker:r&&new Worker(r[0]),busy:!0,options:e,scripts:r};return n.push(t),r?function(t){const e=t.worker,n=t.scripts.slice(1);let i;return e.addEventListener(P,a,!1),t.interface={append:async t=>r({type:C,data:t}),flush:async()=>r({type:N})},t.interface;async function r(e){return i||await s(Object.assign({type:k,options:t.options,scripts:n})),s(e)}function s(t){try{if(t.data)try{e.postMessage(t,[t.data.buffer])}catch(n){e.postMessage(t)}else e.postMessage(t)}catch(t){i.reject(t),e.removeEventListener(P,a,!1)}return new Promise(((t,e)=>i={resolve:t,reject:e}))}function a(n){const r=n.data;if(i){const n=r.error;if(n){const t=new Error(n.message);t.stack=n.stack,i.reject(t),e.removeEventListener(P,a,!1)}else r.type!=k&&r.type!=N&&r.type!=C||(r.type==N?(i.resolve({data:new Uint8Array(r.data),signature:r.signature}),i=null,function(t){if(t.busy=!1,W.pendingRequests.length){const[{resolve:e,options:n,scripts:i}]=W.pendingRequests.splice(0,1);t.busy=!0,t.options=n,t.scripts=i,e(t.interface)}else t.worker.terminate(),W.pool=W.pool.filter((e=>e!=t))}(t)):i.resolve(r.data&&new Uint8Array(r.data)))}}}(t):Z(t)}{const t=n.find((t=>!t.busy));return t?(t.busy=!0,t.options=e,t.scripts=r,r?t.interface:Z(t)):new Promise((t=>W.pendingRequests.push({resolve:t,options:e,scripts:r})))}}async function Z(t){const e=(n=t.options).codecType.startsWith(T)?new O(n):n.codecType.startsWith(M)?new B(n):void 0;var n;const i=e.flush.bind(e);return e.flush=async()=>{const e=await i();if(t.busy=!1,W.pendingRequests.length){const[{resolve:e,options:n}]=W.pendingRequests.splice(0,1);t.busy=!0,t.options=n,e(await Z(t))}else W.pool=W.pool.filter((e=>e!=t));return e},e}async function q(t,e,n,i,r,s,a){const o=Math.max(s.chunkSize,64);return async function s(c=0,h=0){const l=c*o;if(l<r){const d=await e.readUint8Array(l+i,Math.min(o,r-l)),u=await t.append(d);return h+=await K(n,u),a.onprogress&&a.onprogress(l+d.length,r),s(c+1,h)}{const e=await t.flush();return h+=await K(n,e.data),{signature:e.signature,length:h}}}()}async function K(t,e){return e.length&&await t.writeUint8Array(e),e.length}const X="File format is not recognized",Y="End of central directory not found",G="End of Zip64 central directory not found",J="End of Zip64 central directory locator not found",Q="Central directory header not found",$="Local file header not found",tt="Zip64 extra field not found",et="File contains encrypted entry",nt="Encryption not supported",it="Compression method not supported",rt="utf-8",st="windows-1252";class at{constructor(t,e,n){this.reader=t,this.config=e,this.options=n}async getData(t,e={}){const n=this.reader;n.initialized||await n.init();const i=await n.readUint8Array(this.offset,30),r=new DataView(i.buffer),s=void 0===e.password?this.options.password:e.password;let a=s&&s.length&&s;if(1347093252!=r.getUint32(0,!1))throw $;const o=this.localDirectory={};ot(o,r,4),o.rawExtraField=i.subarray(this.offset+30+o.filenameLength,this.offset+30+o.filenameLength+o.extraFieldLength),ct(this,o,r,4);let c=this.offset+30+o.filenameLength+o.extraFieldLength;const h=this.bitFlag.encrypted&&o.bitFlag.encrypted;if(h&&!a)throw new Error(et);const l=await H(this.config,{codecType:M,inputPassword:a,inputSigned:void 0===e.checkSignature?this.options.checkSignature:e.checkSignature,inputSignature:this.signature,inputCompressed:0!=this.compressionMethod,inputEncrypted:h});return t.initialized||await t.init(),await q(l,n,t,c,this.compressedSize,this.config,{onprogress:e.onprogress}),t.getData()}}function ot(t,e,n){t.version=e.getUint16(n,!0);const i=t.rawBitFlag=e.getUint16(n+2,!0);t.bitFlag={encrypted:1==(1&i),level:(6&i)>>1,dataDescriptor:8==(8&i),languageEncodingFlag:2048==(2048&i)},t.rawLastModDate=e.getUint32(n+6,!0),t.lastModDate=function(t){const e=(4294901760&t)>>16,n=65535&t;try{return new Date(1980+((65024&e)>>9),((480&e)>>5)-1,31&e,(63488&n)>>11,(2016&n)>>5,2*(31&n),0)}catch(t){}}(t.rawLastModDate),t.filenameLength=e.getUint16(n+22,!0),t.extraFieldLength=e.getUint16(n+24,!0)}function ct(t,e,n,i){let r,s,a;const o=e.rawExtraField,c=e.extraField=new Map,l=new DataView(new Uint8Array(o).buffer);let d=0;try{for(;d<o.length;){const t=l.getUint16(d,!0),e=l.getUint16(d+2,!0);c.set(t,{type:t,data:o.slice(d+4,d+4+e)}),d+=4+e}}catch(t){}const u=n.getUint16(i+4,!0);e.signature=n.getUint32(i+10,!0),e.uncompressedSize=n.getUint32(i+18,!0),e.compressedSize=n.getUint32(i+14,!0),r=e.extraFieldZip64=c.get(1),r&&function(t,e){e.zip64=!0;const n=new DataView(t.data.buffer);t.values=[];for(let e=0;e<Math.floor(t.data.length/8);e++)t.values.push(Number(n.getBigUint64(0+8*e,!0)));const i=["uncompressedSize","compressedSize","offset"],r=i.filter((t=>4294967295==e[t]));for(let e=0;e<r.length;e++)t[r[e]]=t.values[e];i.forEach((n=>{if(4294967295==e[n]){if(!t||void 0===t[n])throw new Error(tt);e[n]=t&&t[n]}}))}(r,e),a=e.extraFieldUnicodePath=c.get(28789),a&&function(t,e,n){const i=new DataView(t.data.buffer);t.version=i.getUint8(0),t.signature=i.getUint32(1,!0);const r=new h;r.append(n.rawFilename);const s=new DataView(new Uint8Array(4).buffer);s.setUint32(0,r.get()),t.filename=(new TextDecoder).decode(t.data.subarray(5)),t.signature==s.getUint32(0,!1)&&(e.filename=t.filename)}(a,e,t),s=e.extraFieldAES=c.get(39169),s?function(t,e,n){if(t){if(99!=n)throw new Error(it);const i=new DataView(t.data.buffer);t.vendorVersion=i.getUint8(0),t.vendorId=i.getUint8(2);const r=i.getUint8(4);if(t.compressionMethod=i.getUint16(5,!0),3!=r)throw new Error(nt);e.compressionMethod=t.compressionMethod}else e.compressionMethod=n}(s,e,u):e.compressionMethod=u,8==e.compressionMethod&&(e.bitFlag.enhancedDeflating=16!=(16&e.rawBitFlag))}function ht(t,e){return new TextDecoder(e).decode(t)}const lt="File already exists",dt="Zip file comment exceeds 64KB",ut="File entry comment exceeds 64KB";function pt(t){return unescape(encodeURIComponent(t))}function gt(t){const e=[];for(let n=0;n<t.length;n++)e.push(t.charCodeAt(n));return e}const ft="function";function wt(t,e){return class{constructor(n){const i=t=>{if(this.pendingData){const e=this.pendingData;this.pendingData=new Uint8Array(e.length+t.length),this.pendingData.set(e,0),this.pendingData.set(t,e.length)}else this.pendingData=new Uint8Array(t)};if(this.codec=new t(Object.assign({},e,n)),typeof this.codec.onData==ft)this.codec.onData=i;else{if(typeof this.codec.on!=ft)throw new Error("Cannot register the callback function");this.codec.on("data",i)}}async append(t){return this.codec.push(t),n(this)}async flush(){return this.codec.push(new Uint8Array(0),!0),n(this)}};function n(t){if(t.pendingData){const e=t.pendingData;return t.pendingData=null,e}return new Uint8Array(0)}}const yt={chunkSize:524288,maxWorkers:"undefined"!=typeof navigator&&navigator.hardwareConcurrency||2,workerScriptsPath:void 0,useWebWorkers:!0};let Ut=Object.assign({},yt);t.BlobReader=a,t.BlobWriter=class extends s{constructor(t){super(),this.offset=0,this.contentType=t,this.blob=new Blob([],{type:t})}writeUint8Array(t){super.writeUint8Array(t),this.blob=new Blob([this.blob,t.buffer],{type:this.contentType}),this.offset=this.blob.size}getData(){return this.blob}},t.Data64URIReader=class extends r{constructor(t){super(),this.dataURI=t;let e=t.length;for(;"="==t.charAt(e-1);)e--;this.dataStart=t.indexOf(",")+1,this.size=Math.floor(.75*(e-this.dataStart))}readUint8Array(t,e){const n=new Uint8Array(e),i=4*Math.floor(t/3),r=atob(this.dataURI.substring(i+this.dataStart,4*Math.ceil((t+e)/3)+this.dataStart)),s=t-3*Math.floor(i/4);for(let t=s;t<s+e;t++)n[t-s]=r.charCodeAt(t);return n}},t.Data64URIWriter=class extends s{constructor(t){super(),this.data="data:"+(t||"")+";base64,",this.pending=[]}writeUint8Array(t){super.writeUint8Array(t);let e=0,n=this.pending;const i=this.pending.length;for(this.pending="",e=0;e<3*Math.floor((i+t.length)/3)-i;e++)n+=String.fromCharCode(t[e]);for(;e<t.length;e++)this.pending+=String.fromCharCode(t[e]);n.length>2?this.data+=btoa(n):this.pending=n}getData(){return this.data+btoa(this.pending)}},t.ERR_BAD_FORMAT=X,t.ERR_CENTRAL_DIRECTORY_NOT_FOUND=Q,t.ERR_DUPLICATED_NAME=lt,t.ERR_ENCRYPTED=et,t.ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND=J,t.ERR_EOCDR_NOT_FOUND=Y,t.ERR_EOCDR_ZIP64_NOT_FOUND=G,t.ERR_EXTRA_FIELD_ZIP64_NOT_FOUND=tt,t.ERR_INVALID_COMMENT=dt,t.ERR_INVALID_ENTRY_COMMENT=ut,t.ERR_INVALID_PASSORD=l,t.ERR_INVALID_SIGNATURE=_,t.ERR_LOCAL_FILE_HEADER_NOT_FOUND=$,t.ERR_UNSUPPORTED_COMPRESSION=it,t.ERR_UNSUPPORTED_ENCRYPTION=nt,t.HttpRangeReader=class extends r{constructor(t){super(),this.url=t}init(){return super.init(),new Promise(((t,n)=>{const i=new XMLHttpRequest;i.addEventListener("load",(()=>{i.status<400?(this.size=Number(i.getResponseHeader("Content-Length")),"bytes"==i.getResponseHeader("Accept-Ranges")?t():n(new Error("HTTP Range not supported"))):n(e+(i.statusText||i.status)+".")}),!1),i.addEventListener("error",n,!1),i.open("HEAD",this.url),i.send()}))}readUint8Array(t,n){return new Promise(((i,r)=>{const s=new XMLHttpRequest;s.open("GET",this.url),s.responseType="arraybuffer",s.setRequestHeader("Range","bytes="+t+"-"+(t+n-1)),s.addEventListener("load",(()=>{s.status<400?i(new Uint8Array(s.response)):r(e+(s.statusText||s.status)+".")}),!1),s.addEventListener("error",r,!1),s.send()}))}},t.HttpReader=class extends r{constructor(t){super(),this.url=t}async init(){if(super.init(),function(t){if("undefined"!=typeof document){const e=document.createElement("a");return e.href=t,"http:"==e.protocol||"https:"==e.protocol}return/^https?:\/\//i.test(t)}(this.url))return new Promise(((t,n)=>{const i=new XMLHttpRequest;i.addEventListener("load",(()=>{i.status<400?(this.size=Number(i.getResponseHeader("Content-Length")),this.size?t():c().then((()=>t())).catch(n)):n(e+(i.statusText||i.status)+".")}),!1),i.addEventListener("error",n,!1),i.open("HEAD",this.url),i.send()}));await c()}async readUint8Array(t,e){return this.data||await c(this,this.url),new Uint8Array(this.data.subarray(t,t+e))}},t.Reader=r,t.TextReader=class extends r{constructor(t){super(),this.blobReader=new a(new Blob([t],{type:n}))}init(){super.init(),this.blobReader.init(),this.size=this.blobReader.size}readUint8Array(t,e){return this.blobReader.readUint8Array(t,e)}},t.TextWriter=class extends s{constructor(t){super(),this.encoding=t,this.blob=new Blob([],{type:n})}writeUint8Array(t){super.writeUint8Array(t),this.blob=new Blob([this.blob,t.buffer],{type:n})}getData(){const t=new FileReader;return new Promise(((e,n)=>{t.onload=t=>e(t.target.result),t.onerror=n,t.readAsText(this.blob,this.encoding)}))}},t.Uint8ArrayReader=class extends r{constructor(t){super(),this.array=t,this.size=t.length}readUint8Array(t,e){return this.array.slice(t,t+e)}},t.Uint8ArrayWriter=o,t.Writer=s,t.ZipReader=class extends class{constructor(t,e={},n={}){this.reader=t,this.options=e,this.config=n}async getEntries(){const t=this.reader;t.initialized||await t.init();const e=await async function(t,e,n,i){if(t.size<n)throw new Error(X);const r=n+i;let s=n,a=await o(s);a||(a=await o(Math.min(r,t.size)));if(!a)throw new Error(Y);return a;async function o(i){const r=t.size-i,s=await t.readUint8Array(r,i);for(let t=s.length-n;t>=0;t--)if(s[t]==e[0]&&s[t+1]==e[1]&&s[t+2]==e[2]&&s[t+3]==e[3])return{offset:r,buffer:s.slice(t,t+n).buffer}}}(t,[80,75,5,6],22,65536);let n,i=new DataView(e.buffer),r=i.getUint32(16,!0),s=i.getUint16(8,!0);if(4294967295==r||65535==s){n=!0;const i=await t.readUint8Array(e.offset-20,20),a=new DataView(i.buffer);if(1347094023!=Number(a.getUint32(0,!1)))throw new Error(G);r=Number(a.getBigUint64(8,!0));const o=await t.readUint8Array(r,56),c=new DataView(o.buffer);if(1347094022!=Number(c.getUint32(0,!1)))throw new Error(J);s=Number(c.getBigUint64(24,!0)),r-=Number(c.getBigUint64(40,!0))}if(r<0||!n&&(r>=t.size||s>=65535))throw new Error(X);const a=await t.readUint8Array(r,t.size-r);i=new DataView(a.buffer);const o=[];let c=0;for(let t=0;t<s;t++){const t=new at(this.reader,this.config,this.options);if(1347092738!=i.getUint32(c,!1))throw new Error(Q);if(t.compressedSize=0,t.uncompressedSize=0,ot(t,i,c+6),t.commentLength=i.getUint16(c+32,!0),t.directory=16==(16&i.getUint8(c+38)),t.offset=i.getUint32(c+42,!0),t.rawFilename=a.subarray(c+46,c+46+t.filenameLength),t.filename=ht(t.rawFilename,t.bitFlag.languageEncodingFlag?rt:this.options.filenameEncoding||st),t.directory||"/"!=t.filename.charAt(t.filename.length-1)||(t.directory=!0),t.rawExtraField=a.subarray(c+46+t.filenameLength,c+46+t.filenameLength+t.extraFieldLength),ct(t,t,i,c+6),0!=t.compressionMethod&&8!=t.compressionMethod)throw new Error(it);t.rawComment=a.subarray(c+46+t.filenameLength+t.extraFieldLength,c+46+t.filenameLength+t.extraFieldLength+t.commentLength),t.comment=ht(t.rawComment,t.bitFlag.languageEncodingFlag?rt:this.options.commentEncoding||st),o.push(t),c+=46+t.filenameLength+t.extraFieldLength+t.commentLength}return o}async close(){}}{constructor(t,e){super(t,e,Ut)}},t.ZipWriter=class extends class{constructor(t,e={},n={}){this.writer=t,this.options=e,this.config=n,this.files=new Map,this.offset=t.size,this.zip64=e.zip64}async add(t,e,n={}){if(t=t.trim(),n.directory&&"/"!=t.charAt(t.length-1)&&(t+="/"),this.files.has(t))throw new Error(lt);if(n.comment=gt(pt(n.comment||"")),n.comment>65536)throw new Error(ut);n.zip64=n.zip64||this.zip64,await async function(t,e,n,i){const r=t.files,s=t.writer;let a;r.set(e,null);try{let c,h;try{i.bufferedWrite||t.options.bufferedWrite||t.lockWrite?(c=new o,c.init()):(t.lockWrite=new Promise((t=>a=t)),s.initialized||await s.init(),c=s),(t.offset>=4294967295||n&&(n.size>=4294967295||t.offset+n.size>=4294967295))&&(i.zip64=!0),h=await async function(t,e,n,i,r,s){const a=gt(pt(t)),o=s.lastModDate||new Date,c=new Uint8Array(26),h=new DataView(c.buffer),l=void 0===s.password?r.password:s.password,d=l&&l.length&&l,u=void 0===s.level?r.level:s.level,p=0!==u&&!s.directory,g=void 0===l||!l.length,f=s.zip64,w={zip64:f,headerArray:c,directory:s.directory,filename:a,comment:s.comment,extraFieldZip64:f?new Uint8Array(28):new Uint8Array(0),extraFieldAES:d?new Uint8Array([1,153,7,0,2,0,65,69,3,0,0]):new Uint8Array(0),rawExtraField:new Uint8Array(0)},y=s.extraField;if(y){let t=4,e=0;y.forEach((e=>t+=e.length));const n=w.rawExtraField=new Uint8Array(t);y.forEach(((t,i)=>{n.set(new Uint16Array([i]),e),n.set(new Uint16Array([t.length]),e+2),n.set(t,e+4),e+=4+t.length}))}s.bitFlag=8,s.version=(void 0===s.version?r.version:s.version)||20,s.compressionMethod=0,p&&(s.compressionMethod=8);f&&(s.version=s.version>45?s.version:45);d&&(s.version=s.version>51?s.version:51,s.bitFlag=9,s.compressionMethod=99,p&&(w.extraFieldAES[9]=8));h.setUint16(0,s.version,!0),h.setUint16(2,s.bitFlag,!0),h.setUint16(4,s.compressionMethod,!0),h.setUint16(6,(o.getHours()<<6|o.getMinutes())<<5|o.getSeconds()/2,!0),h.setUint16(8,(o.getFullYear()-1980<<4|o.getMonth()+1)<<5|o.getDate(),!0),h.setUint16(22,a.length,!0),h.setUint16(24,0,!0);const U=new Uint8Array(30+a.length);let m;if(new DataView(U.buffer).setUint32(0,1347093252),U.set(c,4),U.set(a,30),e){e.initialized||await e.init();const t=await H(i,{codecType:T,level:u,outputPassword:l,outputSigned:g,outputCompressed:p,outputEncrypted:Boolean(l)});await n.writeUint8Array(U),m=await q(t,e,n,0,e.size,i,{onprogress:s.onprogress}),w.compressedSize=m.length}else await n.writeUint8Array(U);const b=new Uint8Array(f?24:16),A=new DataView(b.buffer);if(A.setUint32(0,1347094280),e)if(d||void 0===m.signature||(h.setUint32(10,m.signature,!0),A.setUint32(4,m.signature,!0)),f){h.setUint32(14,4294967295,!0),A.setBigUint64(8,BigInt(w.compressedSize),!0),h.setUint32(18,4294967295,!0),A.setBigUint64(16,BigInt(e.size),!0);const t=new DataView(w.extraFieldZip64.buffer);t.setUint16(0,1,!0),t.setUint16(2,24,!0),t.setBigUint64(4,BigInt(e.size),!0),t.setBigUint64(12,BigInt(w.compressedSize),!0)}else h.setUint32(14,w.compressedSize,!0),A.setUint32(8,w.compressedSize,!0),h.setUint32(18,e.size,!0),A.setUint32(12,e.size,!0);return await n.writeUint8Array(b),w.length=U.length+(m?m.length:0)+b.length,w}(e,n,c,t.config,t.options,i)}catch(t){throw r.delete(e),t}if(r.set(e,h),c!=s&&(t.lockWrite&&await t.lockWrite,await s.writeUint8Array(c.getData())),h.offset=t.offset,h.zip64){new DataView(h.extraFieldZip64.buffer).setBigUint64(20,BigInt(h.offset),!0)}t.offset+=h.length}finally{a&&(t.lockWrite=null,a())}}(this,t,e,n)}async close(t){const e=this.writer,n=this.files;let i=0,r=0,s=this.offset,a=n.size;for(const[,t]of n)r+=46+t.filename.length+t.comment.length+t.extraFieldZip64.length+t.extraFieldAES.length+t.rawExtraField.length;(s+r>=4294967295||a>=65535)&&(this.zip64=!0);const o=new Uint8Array(r+(this.zip64?98:22)),c=new DataView(o.buffer);for(const[,t]of n){const e=t.filename,n=t.extraFieldZip64,r=t.extraFieldAES,s=n.length+r.length+t.rawExtraField.length;c.setUint32(i,1347092738),t.zip64?c.setUint16(i+4,11520):c.setUint16(i+4,5120),o.set(t.headerArray,i+6),c.setUint16(i+30,s,!0),c.setUint16(i+32,t.comment.length,!0),t.directory&&c.setUint8(i+38,16),t.zip64?c.setUint32(i+42,4294967295,!0):c.setUint32(i+42,t.offset,!0),o.set(e,i+46),o.set(n,i+46+e.length),o.set(r,i+46+e.length+n.length),o.set(t.rawExtraField,46+e.length+n.length+r.length),o.set(t.comment,i+46+e.length+s),i+=46+e.length+s+t.comment.length}if(this.zip64&&(c.setUint32(i,1347094022),c.setBigUint64(i+4,BigInt(44),!0),c.setUint16(i+12,45,!0),c.setUint16(i+14,45,!0),c.setBigUint64(i+24,BigInt(a),!0),c.setBigUint64(i+32,BigInt(a),!0),c.setBigUint64(i+40,BigInt(r),!0),c.setBigUint64(i+48,BigInt(s),!0),c.setUint32(i+56,1347094023),c.setBigUint64(i+64,BigInt(s+r),!0),c.setUint32(i+72,1,!0),a=65535,s=4294967295,i+=76),c.setUint32(i,1347093766),c.setUint16(i+8,a,!0),c.setUint16(i+10,a,!0),c.setUint32(i+12,r,!0),c.setUint32(i+16,s,!0),t&&t.length){if(!(t.length<=65536))throw new Error(dt);c.setUint16(i+20,t.length,!0)}return await e.writeUint8Array(o),t&&t.length&&await e.writeUint8Array(t),e.getData()}}{constructor(t,e){super(t,e,Ut)}},t.configure=function(t){Ut=Object.assign({},Ut,t)},t.getMimeType=function(){return"application/octet-stream"},t.initShimAsyncCodec=(t,e={})=>({ZipDeflate:wt(t.Deflate,e.deflate),ZipInflate:wt(t.Inflate,e.inflate)}),Object.defineProperty(t,"__esModule",{value:!0})})); | ||
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).zip={})}(this,(function(t){"use strict";const e="HTTP error ",n="text/plain";class i{constructor(){this.size=0}init(){this.initialized=!0}}class r extends i{}class s extends i{writeUint8Array(t){this.size+=t.length}}class a extends r{constructor(t){super(),this.blob=t,this.size=t.size}readUint8Array(t,e){const n=new FileReader;return new Promise(((i,r)=>{n.onload=t=>i(new Uint8Array(t.target.result)),n.onerror=r,n.readAsArrayBuffer(this.blob.slice(t,t+e))}))}}class o extends s{constructor(){super(),this.array=new Uint8Array(0)}writeUint8Array(t){super.writeUint8Array(t);const e=this.array;this.array=new Uint8Array(e.length+t.length),this.array.set(e),this.array.set(t,e.length)}getData(){return this.array}}function c(t,n){return new Promise(((i,r)=>{const s=new XMLHttpRequest;s.addEventListener("load",(()=>{s.status<400?(t.size||(t.size=Number(s.getResponseHeader("Content-Length"))||Number(s.response.byteLength)),t.data=new Uint8Array(s.response),i()):r(e+(s.statusText||s.status)+".")}),!1),s.addEventListener("error",r,!1),s.open("GET",n),s.responseType="arraybuffer",s.send()}))}class h{constructor(){this.crc=-1,this.table=(()=>{const t=[];for(let e=0;e<256;e++){let n=e;for(let t=0;t<8;t++)1&n?n=n>>>1^3988292384:n>>>=1;t[e]=n}return t})()}append(t){const e=this.table;let n=0|this.crc;for(let i=0,r=0|t.length;i<r;i++)n=n>>>8^e[255&(n^t[i])];this.crc=n}get(){return~this.crc}}const l="Invalid pasword",d=16,u="raw",p={name:"PBKDF2"},g={name:"HMAC"},f="SHA-1",w={name:"AES-CTR"},y=Object.assign({hash:g},p),U=Object.assign({iterations:1e3,hash:{name:f}},p),m=Object.assign({hash:f},g),b=Object.assign({length:d},w),A=["deriveBits"],E=["sign"],R=528,D=10,v=[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],x=crypto.subtle;class z{constructor(t,e){this.password=t,this.signed=e,this.input=e&&new Uint8Array(0),this.pendingInput=new Uint8Array(0)}async append(t){const e=async(r=0)=>{if(r+d<=i.length-D){const t=i.subarray(r,r+d),s=await x.decrypt(Object.assign({counter:this.counter},b),this.keys.decrypt,t);return L(this.counter),n.set(new Uint8Array(s),r),e(r+d)}return this.pendingInput=i.subarray(r),this.signed&&(this.input=S(this.input,t)),n};if(this.password){const e=t.subarray(0,18);await async function(t,e,n){t.counter=new Uint8Array(v);const i=e.subarray(0,16),r=e.subarray(16),s=(new TextEncoder).encode(n),a=await x.importKey(u,s,y,!1,A),o=await x.deriveBits(Object.assign({salt:i},U),a,528),c=new Uint8Array(o),h=c.subarray(64);if(t.keys={decrypt:await x.importKey(u,c.subarray(0,32),w,!0,["decrypt"]),authentication:await x.importKey(u,c.subarray(32,64),m,!1,E),passwordVerification:h},h[0]!=r[0]||h[1]!=r[1])throw new Error(l)}(this,e,this.password),this.password=null,t=t.subarray(18)}let n=new Uint8Array(t.length-D-(t.length-D)%d),i=t;return this.pendingInput.length&&(i=S(this.pendingInput,t),n=I(n,i.length-D-(i.length-D)%d)),e()}async flush(){const t=this.pendingInput,e=this.keys,n=t.subarray(0,t.length-D),i=t.subarray(t.length-D);let r=new Uint8Array(0);if(n.length){const t=await x.decrypt(Object.assign({counter:this.counter},b),e.decrypt,n);r=new Uint8Array(t)}let s=!0;if(this.signed){const t=await x.sign(g,e.authentication,this.input.subarray(0,this.input.length-D)),n=new Uint8Array(t);this.input=null;for(let t=0;t<D;t++)n[t]!=i[t]&&(s=!1)}return{valid:s,data:r}}}class F{constructor(t){this.password=t,this.output=new Uint8Array(0),this.pendingInput=new Uint8Array(0)}async append(t){const e=async(r=0)=>{if(r+d<=t.length){const s=t.subarray(r,r+d),a=await x.encrypt(Object.assign({counter:this.counter},b),this.keys.encrypt,s);return L(this.counter),i.set(new Uint8Array(a),r+n.length),e(r+d)}return this.pendingInput=t.subarray(r),this.output=S(this.output,i),i};let n=new Uint8Array(0);this.password&&(n=await async function(t,e){t.counter=new Uint8Array(v);const n=crypto.getRandomValues(new Uint8Array(16)),i=(new TextEncoder).encode(e),r=await x.importKey(u,i,y,!1,A),s=await x.deriveBits(Object.assign({salt:n},U),r,R),a=new Uint8Array(s);return t.keys={encrypt:await x.importKey(u,a.subarray(0,32),w,!0,["encrypt"]),authentication:await x.importKey(u,a.subarray(32,64),m,!1,E),passwordVerification:a.subarray(64)},S(n,t.keys.passwordVerification)}(this,this.password),this.password=null);let i=new Uint8Array(n.length+t.length-t.length%d);return i.set(n,0),this.pendingInput.length&&(t=S(this.pendingInput,t),i=I(i,t.length-t.length%d)),e()}async flush(){let t=new Uint8Array(0);if(this.pendingInput.length){const e=await x.encrypt(Object.assign({counter:this.counter},b),this.keys.encrypt,this.pendingInput);t=new Uint8Array(e),this.output=S(this.output,t)}const e=await x.sign(g,this.keys.authentication,this.output.subarray(18));this.output=null;const n=new Uint8Array(e).subarray(0,D);return{data:S(t,n),signature:n}}}function L(t){for(let e=0;e<16;e++){if(255!=t[e]){t[e]++;break}t[e]=0}}function S(t,e){let n=t;return t.length+e.length&&(n=new Uint8Array(t.length+e.length),n.set(t,0),n.set(e,t.length)),n}function I(t,e){if(e&&e>t.length){const n=t;(t=new Uint8Array(e)).set(n,0)}return t}const T="deflate",M="inflate",_="Invalid signature";class B{constructor(t){this.signature=t.inputSignature,this.encrypted=Boolean(t.inputPassword),this.signed=t.inputSigned,this.compressed=t.inputCompressed,this.inflate=this.compressed&&new ZipInflate,this.crc32=this.signed&&this.signed&&new h,this.decrypt=this.encrypted&&new z(t.inputPassword)}async append(t){return this.encrypted&&(t=await this.decrypt.append(t)),this.compressed&&t.length&&(t=await this.inflate.append(t)),!this.encrypted&&this.signed&&this.crc32.append(t),t}async flush(){let t,e=new Uint8Array(0);if(this.encrypted){const t=await this.decrypt.flush();if(!t.valid)throw new Error(_);e=t.data}else if(this.signed){const e=new DataView(new Uint8Array(4).buffer);if(t=this.crc32.get(),e.setUint32(0,t),this.signature!=e.getUint32(0,!1))throw new Error(_)}return this.compressed&&(e=await this.inflate.append(e)||new Uint8Array(0),await this.inflate.flush()),{data:e,signature:t}}}class O{constructor(t){this.encrypted=t.outputEncrypted,this.signed=t.outputSigned,this.compressed=t.outputCompressed,this.deflate=this.compressed&&new ZipDeflate({level:t.level||5}),this.crc32=this.signed&&new h,this.encrypt=this.encrypted&&new F(t.outputPassword)}async append(t){let e=t;return this.compressed&&t.length&&(e=await this.deflate.append(t)),this.encrypted?e=await this.encrypt.append(e):this.signed&&this.crc32.append(t),e}async flush(){let t,e=new Uint8Array(0);if(this.compressed&&(e=await this.deflate.flush()||new Uint8Array(0)),this.encrypted){e=await this.encrypt.append(e);const n=await this.encrypt.flush();t=n.signature;const i=new Uint8Array(e.length+n.data.length);i.set(e,0),i.set(n.data,e.length),e=i}else this.signed&&(t=this.crc32.get());return{data:e,signature:t}}}const k="init",N="append",C="flush",P="message",V="z-worker.js",j={deflate:[V,"deflate.js"],inflate:[V,"inflate.js"]},W={pool:[],pendingRequests:[]};function H(t,e){const n=W.pool;let i;if(t.useWebWorkers){const n=e.codecType;if(null!=t.workerScripts&&null!=t.workerScriptsPath)throw new Error("Either workerScripts or workerScriptsPath may be set, not both");if(t.workerScripts){if(i=t.workerScripts[n],!Array.isArray(i))throw new Error("workerScripts."+n+" must be an array");r=i,i="undefined"!=typeof document?r.map((t=>new URL(t,document.baseURI).href)):r}else i=j[n].slice(0),i[0]=(t.workerScriptsPath||"")+i[0]}var r;if(n.length<t.maxWorkers){const t={worker:i&&new Worker(i[0]),busy:!0,options:e,scripts:i};return n.push(t),i?function(t){const e=t.worker;let n;return e.addEventListener(P,s,!1),t.interface={append:async t=>i({type:N,data:t}),flush:async()=>i({type:C})},t.interface;async function i(e){if(!n){const e=t.scripts.slice(1);await r(Object.assign({type:k,options:t.options,scripts:e}))}return r(e)}function r(t){try{if(t.data)try{e.postMessage(t,[t.data.buffer])}catch(n){e.postMessage(t)}else e.postMessage(t)}catch(t){n.reject(t),e.removeEventListener(P,s,!1)}return new Promise(((t,e)=>n={resolve:t,reject:e}))}function s(i){const r=i.data;if(n){const i=r.error;if(i){const t=new Error(i.message);t.stack=i.stack,n.reject(t),e.removeEventListener(P,s,!1)}else r.type!=k&&r.type!=C&&r.type!=N||(r.type==C?(n.resolve({data:new Uint8Array(r.data),signature:r.signature}),n=null,function(t){if(t.busy=!1,W.pendingRequests.length){const[{resolve:e,options:n,scripts:i}]=W.pendingRequests.splice(0,1);t.busy=!0,t.options=n,t.scripts=i,e(t.interface)}else t.worker.terminate(),W.pool=W.pool.filter((e=>e!=t))}(t)):n.resolve(r.data&&new Uint8Array(r.data)))}}}(t):Z(t)}{const t=n.find((t=>!t.busy));return t?(t.busy=!0,t.options=e,t.scripts=i,i?t.interface:Z(t)):new Promise((t=>W.pendingRequests.push({resolve:t,options:e,scripts:i})))}}async function Z(t){const e=(n=t.options).codecType.startsWith(T)?new O(n):n.codecType.startsWith(M)?new B(n):void 0;var n;const i=e.flush.bind(e);return e.flush=async()=>{const e=await i();if(t.busy=!1,W.pendingRequests.length){const[{resolve:e,options:n}]=W.pendingRequests.splice(0,1);t.busy=!0,t.options=n,e(await Z(t))}else W.pool=W.pool.filter((e=>e!=t));return e},e}async function q(t,e,n,i,r,s,a){const o=Math.max(s.chunkSize,64);return async function s(c=0,h=0){const l=c*o;if(l<r){const d=await e.readUint8Array(l+i,Math.min(o,r-l)),u=await t.append(d);return h+=await K(n,u),a.onprogress&&a.onprogress(l+d.length,r),s(c+1,h)}{const e=await t.flush();return h+=await K(n,e.data),{signature:e.signature,length:h}}}()}async function K(t,e){return e.length&&await t.writeUint8Array(e),e.length}const X="File format is not recognized",Y="End of central directory not found",G="End of Zip64 central directory not found",J="End of Zip64 central directory locator not found",Q="Central directory header not found",$="Local file header not found",tt="Zip64 extra field not found",et="File contains encrypted entry",nt="Encryption not supported",it="Compression method not supported",rt="utf-8",st="windows-1252";class at{constructor(t,e,n){this.reader=t,this.config=e,this.options=n}async getData(t,e={}){const n=this.reader;n.initialized||await n.init();const i=await n.readUint8Array(this.offset,30),r=new DataView(i.buffer),s=void 0===e.password?this.options.password:e.password;let a=s&&s.length&&s;if(1347093252!=r.getUint32(0,!1))throw $;const o=this.localDirectory={};ot(o,r,4),o.rawExtraField=i.subarray(this.offset+30+o.filenameLength,this.offset+30+o.filenameLength+o.extraFieldLength),ct(this,o,r,4);let c=this.offset+30+o.filenameLength+o.extraFieldLength;const h=this.bitFlag.encrypted&&o.bitFlag.encrypted;if(h&&!a)throw new Error(et);const l=await H(this.config,{codecType:M,inputPassword:a,inputSigned:void 0===e.checkSignature?this.options.checkSignature:e.checkSignature,inputSignature:this.signature,inputCompressed:0!=this.compressionMethod,inputEncrypted:h});return t.initialized||await t.init(),await q(l,n,t,c,this.compressedSize,this.config,{onprogress:e.onprogress}),t.getData()}}function ot(t,e,n){t.version=e.getUint16(n,!0);const i=t.rawBitFlag=e.getUint16(n+2,!0);t.bitFlag={encrypted:1==(1&i),level:(6&i)>>1,dataDescriptor:8==(8&i),languageEncodingFlag:2048==(2048&i)},t.rawLastModDate=e.getUint32(n+6,!0),t.lastModDate=function(t){const e=(4294901760&t)>>16,n=65535&t;try{return new Date(1980+((65024&e)>>9),((480&e)>>5)-1,31&e,(63488&n)>>11,(2016&n)>>5,2*(31&n),0)}catch(t){}}(t.rawLastModDate),t.filenameLength=e.getUint16(n+22,!0),t.extraFieldLength=e.getUint16(n+24,!0)}function ct(t,e,n,i){let r,s,a;const o=e.rawExtraField,c=e.extraField=new Map,l=new DataView(new Uint8Array(o).buffer);let d=0;try{for(;d<o.length;){const t=l.getUint16(d,!0),e=l.getUint16(d+2,!0);c.set(t,{type:t,data:o.slice(d+4,d+4+e)}),d+=4+e}}catch(t){}const u=n.getUint16(i+4,!0);e.signature=n.getUint32(i+10,!0),e.uncompressedSize=n.getUint32(i+18,!0),e.compressedSize=n.getUint32(i+14,!0),r=e.extraFieldZip64=c.get(1),r&&function(t,e){e.zip64=!0;const n=new DataView(t.data.buffer);t.values=[];for(let e=0;e<Math.floor(t.data.length/8);e++)t.values.push(Number(n.getBigUint64(0+8*e,!0)));const i=["uncompressedSize","compressedSize","offset"],r=i.filter((t=>4294967295==e[t]));for(let e=0;e<r.length;e++)t[r[e]]=t.values[e];i.forEach((n=>{if(4294967295==e[n]){if(!t||void 0===t[n])throw new Error(tt);e[n]=t&&t[n]}}))}(r,e),a=e.extraFieldUnicodePath=c.get(28789),a&&function(t,e,n){const i=new DataView(t.data.buffer);t.version=i.getUint8(0),t.signature=i.getUint32(1,!0);const r=new h;r.append(n.rawFilename);const s=new DataView(new Uint8Array(4).buffer);s.setUint32(0,r.get()),t.filename=(new TextDecoder).decode(t.data.subarray(5)),t.signature==s.getUint32(0,!1)&&(e.filename=t.filename)}(a,e,t),s=e.extraFieldAES=c.get(39169),s?function(t,e,n){if(t){if(99!=n)throw new Error(it);const i=new DataView(t.data.buffer);t.vendorVersion=i.getUint8(0),t.vendorId=i.getUint8(2);const r=i.getUint8(4);if(t.compressionMethod=i.getUint16(5,!0),3!=r)throw new Error(nt);e.compressionMethod=t.compressionMethod}else e.compressionMethod=n}(s,e,u):e.compressionMethod=u,8==e.compressionMethod&&(e.bitFlag.enhancedDeflating=16!=(16&e.rawBitFlag))}function ht(t,e){return new TextDecoder(e).decode(t)}const lt="File already exists",dt="Zip file comment exceeds 64KB",ut="File entry comment exceeds 64KB";function pt(t){return unescape(encodeURIComponent(t))}function gt(t){const e=[];for(let n=0;n<t.length;n++)e.push(t.charCodeAt(n));return e}const ft="function";function wt(t,e){return class{constructor(n){const i=t=>{if(this.pendingData){const e=this.pendingData;this.pendingData=new Uint8Array(e.length+t.length),this.pendingData.set(e,0),this.pendingData.set(t,e.length)}else this.pendingData=new Uint8Array(t)};if(this.codec=new t(Object.assign({},e,n)),typeof this.codec.onData==ft)this.codec.onData=i;else{if(typeof this.codec.on!=ft)throw new Error("Cannot register the callback function");this.codec.on("data",i)}}async append(t){return this.codec.push(t),n(this)}async flush(){return this.codec.push(new Uint8Array(0),!0),n(this)}};function n(t){if(t.pendingData){const e=t.pendingData;return t.pendingData=null,e}return new Uint8Array(0)}}const yt={chunkSize:524288,maxWorkers:"undefined"!=typeof navigator&&navigator.hardwareConcurrency||2,workerScriptsPath:void 0,useWebWorkers:!0};let Ut=Object.assign({},yt);t.BlobReader=a,t.BlobWriter=class extends s{constructor(t){super(),this.offset=0,this.contentType=t,this.blob=new Blob([],{type:t})}writeUint8Array(t){super.writeUint8Array(t),this.blob=new Blob([this.blob,t.buffer],{type:this.contentType}),this.offset=this.blob.size}getData(){return this.blob}},t.Data64URIReader=class extends r{constructor(t){super(),this.dataURI=t;let e=t.length;for(;"="==t.charAt(e-1);)e--;this.dataStart=t.indexOf(",")+1,this.size=Math.floor(.75*(e-this.dataStart))}readUint8Array(t,e){const n=new Uint8Array(e),i=4*Math.floor(t/3),r=atob(this.dataURI.substring(i+this.dataStart,4*Math.ceil((t+e)/3)+this.dataStart)),s=t-3*Math.floor(i/4);for(let t=s;t<s+e;t++)n[t-s]=r.charCodeAt(t);return n}},t.Data64URIWriter=class extends s{constructor(t){super(),this.data="data:"+(t||"")+";base64,",this.pending=[]}writeUint8Array(t){super.writeUint8Array(t);let e=0,n=this.pending;const i=this.pending.length;for(this.pending="",e=0;e<3*Math.floor((i+t.length)/3)-i;e++)n+=String.fromCharCode(t[e]);for(;e<t.length;e++)this.pending+=String.fromCharCode(t[e]);n.length>2?this.data+=btoa(n):this.pending=n}getData(){return this.data+btoa(this.pending)}},t.ERR_BAD_FORMAT=X,t.ERR_CENTRAL_DIRECTORY_NOT_FOUND=Q,t.ERR_DUPLICATED_NAME=lt,t.ERR_ENCRYPTED=et,t.ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND=J,t.ERR_EOCDR_NOT_FOUND=Y,t.ERR_EOCDR_ZIP64_NOT_FOUND=G,t.ERR_EXTRA_FIELD_ZIP64_NOT_FOUND=tt,t.ERR_INVALID_COMMENT=dt,t.ERR_INVALID_ENTRY_COMMENT=ut,t.ERR_INVALID_PASSORD=l,t.ERR_INVALID_SIGNATURE=_,t.ERR_LOCAL_FILE_HEADER_NOT_FOUND=$,t.ERR_UNSUPPORTED_COMPRESSION=it,t.ERR_UNSUPPORTED_ENCRYPTION=nt,t.HttpRangeReader=class extends r{constructor(t){super(),this.url=t}init(){return super.init(),new Promise(((t,n)=>{const i=new XMLHttpRequest;i.addEventListener("load",(()=>{i.status<400?(this.size=Number(i.getResponseHeader("Content-Length")),"bytes"==i.getResponseHeader("Accept-Ranges")?t():n(new Error("HTTP Range not supported"))):n(e+(i.statusText||i.status)+".")}),!1),i.addEventListener("error",n,!1),i.open("HEAD",this.url),i.send()}))}readUint8Array(t,n){return new Promise(((i,r)=>{const s=new XMLHttpRequest;s.open("GET",this.url),s.responseType="arraybuffer",s.setRequestHeader("Range","bytes="+t+"-"+(t+n-1)),s.addEventListener("load",(()=>{s.status<400?i(new Uint8Array(s.response)):r(e+(s.statusText||s.status)+".")}),!1),s.addEventListener("error",r,!1),s.send()}))}},t.HttpReader=class extends r{constructor(t){super(),this.url=t}async init(){if(super.init(),function(t){if("undefined"!=typeof document){const e=document.createElement("a");return e.href=t,"http:"==e.protocol||"https:"==e.protocol}return/^https?:\/\//i.test(t)}(this.url))return new Promise(((t,n)=>{const i=new XMLHttpRequest;i.addEventListener("load",(()=>{i.status<400?(this.size=Number(i.getResponseHeader("Content-Length")),this.size?t():c().then((()=>t())).catch(n)):n(e+(i.statusText||i.status)+".")}),!1),i.addEventListener("error",n,!1),i.open("HEAD",this.url),i.send()}));await c()}async readUint8Array(t,e){return this.data||await c(this,this.url),new Uint8Array(this.data.subarray(t,t+e))}},t.Reader=r,t.TextReader=class extends r{constructor(t){super(),this.blobReader=new a(new Blob([t],{type:n}))}init(){super.init(),this.blobReader.init(),this.size=this.blobReader.size}readUint8Array(t,e){return this.blobReader.readUint8Array(t,e)}},t.TextWriter=class extends s{constructor(t){super(),this.encoding=t,this.blob=new Blob([],{type:n})}writeUint8Array(t){super.writeUint8Array(t),this.blob=new Blob([this.blob,t.buffer],{type:n})}getData(){const t=new FileReader;return new Promise(((e,n)=>{t.onload=t=>e(t.target.result),t.onerror=n,t.readAsText(this.blob,this.encoding)}))}},t.Uint8ArrayReader=class extends r{constructor(t){super(),this.array=t,this.size=t.length}readUint8Array(t,e){return this.array.slice(t,t+e)}},t.Uint8ArrayWriter=o,t.Writer=s,t.ZipReader=class extends class{constructor(t,e={},n={}){this.reader=t,this.options=e,this.config=n}async getEntries(){const t=this.reader;t.initialized||await t.init();const e=await async function(t,e,n,i){if(t.size<n)throw new Error(X);const r=n+i;let s=n,a=await o(s);a||(a=await o(Math.min(r,t.size)));if(!a)throw new Error(Y);return a;async function o(i){const r=t.size-i,s=await t.readUint8Array(r,i);for(let t=s.length-n;t>=0;t--)if(s[t]==e[0]&&s[t+1]==e[1]&&s[t+2]==e[2]&&s[t+3]==e[3])return{offset:r,buffer:s.slice(t,t+n).buffer}}}(t,[80,75,5,6],22,65536);let n,i=new DataView(e.buffer),r=i.getUint32(16,!0),s=i.getUint16(8,!0);if(4294967295==r||65535==s){n=!0;const i=await t.readUint8Array(e.offset-20,20),a=new DataView(i.buffer);if(1347094023!=Number(a.getUint32(0,!1)))throw new Error(G);r=Number(a.getBigUint64(8,!0));const o=await t.readUint8Array(r,56),c=new DataView(o.buffer);if(1347094022!=Number(c.getUint32(0,!1)))throw new Error(J);s=Number(c.getBigUint64(24,!0)),r-=Number(c.getBigUint64(40,!0))}if(r<0||!n&&(r>=t.size||s>=65535))throw new Error(X);const a=await t.readUint8Array(r,t.size-r);i=new DataView(a.buffer);const o=[];let c=0;for(let t=0;t<s;t++){const t=new at(this.reader,this.config,this.options);if(1347092738!=i.getUint32(c,!1))throw new Error(Q);if(t.compressedSize=0,t.uncompressedSize=0,ot(t,i,c+6),t.commentLength=i.getUint16(c+32,!0),t.directory=16==(16&i.getUint8(c+38)),t.offset=i.getUint32(c+42,!0),t.rawFilename=a.subarray(c+46,c+46+t.filenameLength),t.filename=ht(t.rawFilename,t.bitFlag.languageEncodingFlag?rt:this.options.filenameEncoding||st),t.directory||"/"!=t.filename.charAt(t.filename.length-1)||(t.directory=!0),t.rawExtraField=a.subarray(c+46+t.filenameLength,c+46+t.filenameLength+t.extraFieldLength),ct(t,t,i,c+6),0!=t.compressionMethod&&8!=t.compressionMethod)throw new Error(it);t.rawComment=a.subarray(c+46+t.filenameLength+t.extraFieldLength,c+46+t.filenameLength+t.extraFieldLength+t.commentLength),t.comment=ht(t.rawComment,t.bitFlag.languageEncodingFlag?rt:this.options.commentEncoding||st),o.push(t),c+=46+t.filenameLength+t.extraFieldLength+t.commentLength}return o}async close(){}}{constructor(t,e){super(t,e,Ut)}},t.ZipWriter=class extends class{constructor(t,e={},n={}){this.writer=t,this.options=e,this.config=n,this.files=new Map,this.offset=t.size,this.zip64=e.zip64}async add(t,e,n={}){if(t=t.trim(),n.directory&&"/"!=t.charAt(t.length-1)&&(t+="/"),this.files.has(t))throw new Error(lt);if(n.comment=gt(pt(n.comment||"")),n.comment>65536)throw new Error(ut);n.zip64=n.zip64||this.zip64,await async function(t,e,n,i){const r=t.files,s=t.writer;let a;r.set(e,null);try{let c,h;try{i.bufferedWrite||t.options.bufferedWrite||t.lockWrite?(c=new o,c.init()):(t.lockWrite=new Promise((t=>a=t)),s.initialized||await s.init(),c=s),(t.offset>=4294967295||n&&(n.size>=4294967295||t.offset+n.size>=4294967295))&&(i.zip64=!0),h=await async function(t,e,n,i,r,s){const a=gt(pt(t)),o=s.lastModDate||new Date,c=new Uint8Array(26),h=new DataView(c.buffer),l=void 0===s.password?r.password:s.password,d=l&&l.length&&l,u=void 0===s.level?r.level:s.level,p=0!==u&&!s.directory,g=void 0===l||!l.length,f=s.zip64,w={zip64:f,headerArray:c,directory:s.directory,filename:a,comment:s.comment,extraFieldZip64:f?new Uint8Array(28):new Uint8Array(0),extraFieldAES:d?new Uint8Array([1,153,7,0,2,0,65,69,3,0,0]):new Uint8Array(0),rawExtraField:new Uint8Array(0)},y=s.extraField;if(y){let t=4,e=0;y.forEach((e=>t+=e.length));const n=w.rawExtraField=new Uint8Array(t);y.forEach(((t,i)=>{n.set(new Uint16Array([i]),e),n.set(new Uint16Array([t.length]),e+2),n.set(t,e+4),e+=4+t.length}))}s.bitFlag=8,s.version=(void 0===s.version?r.version:s.version)||20,s.compressionMethod=0,p&&(s.compressionMethod=8);f&&(s.version=s.version>45?s.version:45);d&&(s.version=s.version>51?s.version:51,s.bitFlag=9,s.compressionMethod=99,p&&(w.extraFieldAES[9]=8));h.setUint16(0,s.version,!0),h.setUint16(2,s.bitFlag,!0),h.setUint16(4,s.compressionMethod,!0),h.setUint16(6,(o.getHours()<<6|o.getMinutes())<<5|o.getSeconds()/2,!0),h.setUint16(8,(o.getFullYear()-1980<<4|o.getMonth()+1)<<5|o.getDate(),!0),h.setUint16(22,a.length,!0),h.setUint16(24,0,!0);const U=new Uint8Array(30+a.length);let m;if(new DataView(U.buffer).setUint32(0,1347093252),U.set(c,4),U.set(a,30),e){e.initialized||await e.init();const t=await H(i,{codecType:T,level:u,outputPassword:l,outputSigned:g,outputCompressed:p,outputEncrypted:Boolean(l)});await n.writeUint8Array(U),m=await q(t,e,n,0,e.size,i,{onprogress:s.onprogress}),w.compressedSize=m.length}else await n.writeUint8Array(U);const b=new Uint8Array(f?24:16),A=new DataView(b.buffer);if(A.setUint32(0,1347094280),e)if(d||void 0===m.signature||(h.setUint32(10,m.signature,!0),A.setUint32(4,m.signature,!0)),f){h.setUint32(14,4294967295,!0),A.setBigUint64(8,BigInt(w.compressedSize),!0),h.setUint32(18,4294967295,!0),A.setBigUint64(16,BigInt(e.size),!0);const t=new DataView(w.extraFieldZip64.buffer);t.setUint16(0,1,!0),t.setUint16(2,24,!0),t.setBigUint64(4,BigInt(e.size),!0),t.setBigUint64(12,BigInt(w.compressedSize),!0)}else h.setUint32(14,w.compressedSize,!0),A.setUint32(8,w.compressedSize,!0),h.setUint32(18,e.size,!0),A.setUint32(12,e.size,!0);return await n.writeUint8Array(b),w.length=U.length+(m?m.length:0)+b.length,w}(e,n,c,t.config,t.options,i)}catch(t){throw r.delete(e),t}if(r.set(e,h),c!=s&&(t.lockWrite&&await t.lockWrite,await s.writeUint8Array(c.getData())),h.offset=t.offset,h.zip64){new DataView(h.extraFieldZip64.buffer).setBigUint64(20,BigInt(h.offset),!0)}t.offset+=h.length}finally{a&&(t.lockWrite=null,a())}}(this,t,e,n)}async close(t){const e=this.writer,n=this.files;let i=0,r=0,s=this.offset,a=n.size;for(const[,t]of n)r+=46+t.filename.length+t.comment.length+t.extraFieldZip64.length+t.extraFieldAES.length+t.rawExtraField.length;(s+r>=4294967295||a>=65535)&&(this.zip64=!0);const o=new Uint8Array(r+(this.zip64?98:22)),c=new DataView(o.buffer);for(const[,t]of n){const e=t.filename,n=t.extraFieldZip64,r=t.extraFieldAES,s=n.length+r.length+t.rawExtraField.length;c.setUint32(i,1347092738),t.zip64?c.setUint16(i+4,11520):c.setUint16(i+4,5120),o.set(t.headerArray,i+6),c.setUint16(i+30,s,!0),c.setUint16(i+32,t.comment.length,!0),t.directory&&c.setUint8(i+38,16),t.zip64?c.setUint32(i+42,4294967295,!0):c.setUint32(i+42,t.offset,!0),o.set(e,i+46),o.set(n,i+46+e.length),o.set(r,i+46+e.length+n.length),o.set(t.rawExtraField,46+e.length+n.length+r.length),o.set(t.comment,i+46+e.length+s),i+=46+e.length+s+t.comment.length}if(this.zip64&&(c.setUint32(i,1347094022),c.setBigUint64(i+4,BigInt(44),!0),c.setUint16(i+12,45,!0),c.setUint16(i+14,45,!0),c.setBigUint64(i+24,BigInt(a),!0),c.setBigUint64(i+32,BigInt(a),!0),c.setBigUint64(i+40,BigInt(r),!0),c.setBigUint64(i+48,BigInt(s),!0),c.setUint32(i+56,1347094023),c.setBigUint64(i+64,BigInt(s+r),!0),c.setUint32(i+72,1,!0),a=65535,s=4294967295,i+=76),c.setUint32(i,1347093766),c.setUint16(i+8,a,!0),c.setUint16(i+10,a,!0),c.setUint32(i+12,r,!0),c.setUint32(i+16,s,!0),t&&t.length){if(!(t.length<=65536))throw new Error(dt);c.setUint16(i+20,t.length,!0)}return await e.writeUint8Array(o),t&&t.length&&await e.writeUint8Array(t),e.getData()}}{constructor(t,e){super(t,e,Ut)}},t.configure=function(t){Ut=Object.assign({},Ut,t)},t.getMimeType=function(){return"application/octet-stream"},t.initShimAsyncCodec=(t,e={})=>({ZipDeflate:wt(t.Deflate,e.deflate),ZipInflate:wt(t.Inflate,e.inflate)}),Object.defineProperty(t,"__esModule",{value:!0})})); |
@@ -60,7 +60,4 @@ /* | ||
const pool = workers.pool; | ||
const streamCopy = | ||
!options.inputCompressed && !options.inputSigned && !options.inputEncrypted && | ||
!options.outputCompressed && !options.outputSigned && !options.outputEncrypted; | ||
let scripts; | ||
if (config.useWebWorkers && !streamCopy) { | ||
if (config.useWebWorkers) { | ||
const codecType = options.codecType; | ||
@@ -119,3 +116,2 @@ if (config.workerScripts != null && config.workerScriptsPath != null) { | ||
const worker = workerData.worker; | ||
const scripts = workerData.scripts.slice(1); | ||
let task; | ||
@@ -135,2 +131,3 @@ worker.addEventListener(MESSAGE_EVENT_TYPE, onMessage, false); | ||
if (!task) { | ||
const scripts = workerData.scripts.slice(1); | ||
await sendMessage(Object.assign({ type: MESSAGE_INIT, options: workerData.options, scripts })); | ||
@@ -137,0 +134,0 @@ } |
@@ -37,6 +37,4 @@ /* | ||
init(message) { | ||
if (message.scripts && message.scripts.length > 0) { | ||
if (message.scripts.length) { | ||
importScripts.apply(undefined, message.scripts); | ||
} | ||
if (message.scripts && message.scripts.length) { | ||
importScripts.apply(undefined, message.scripts); | ||
} | ||
@@ -43,0 +41,0 @@ const options = message.options; |
@@ -6,3 +6,3 @@ { | ||
"license": "BSD-3-Clause", | ||
"version": "2.0.1", | ||
"version": "2.0.2", | ||
"keywords": [ | ||
@@ -22,2 +22,3 @@ "zip", | ||
"main": "index.js", | ||
"types": "index.d.ts", | ||
"repository": { | ||
@@ -24,0 +25,0 @@ "type": "git", |
@@ -27,5 +27,13 @@ /* eslint-disable no-console */ | ||
})); | ||
await Promise.all(ENTRIES_DATA_PASS2.map(async entryData => { | ||
await zipWriter.add(entryData.name, new zip.BlobReader(entryData.blob)); | ||
})); | ||
await Promise.all(ENTRIES_DATA_PASS2.map(async (entryData, indexEntry) => | ||
new Promise((resolve, reject) => { | ||
setTimeout(async () => { | ||
try { | ||
resolve(await zipWriter.add(entryData.name, new zip.BlobReader(entryData.blob), { level: 5 })); | ||
} catch (error) { | ||
reject(error); | ||
} | ||
}, Math.random() * 250 + (indexEntry * 100)); | ||
}) | ||
)); | ||
await zipWriter.close(); | ||
@@ -38,13 +46,6 @@ const zipReader = new zip.ZipReader(new zip.BlobReader(blobWriter.getData())); | ||
})); | ||
const results2 = await Promise.all(entries.slice(ENTRIES_DATA.length).map(async (entry, indexEntry) => | ||
new Promise((resolve, reject) => { | ||
setTimeout(async () => { | ||
try { | ||
const blob = await entry.getData(new zip.BlobWriter("application/octet-stream")); | ||
resolve(compareResult(blob, ENTRIES_DATA_PASS2[indexEntry].blob)); | ||
} catch (error) { | ||
reject(error); | ||
} | ||
}, Math.random() * 250 + (indexEntry * 100)); | ||
}))); | ||
const results2 = await Promise.all(entries.slice(ENTRIES_DATA.length).map(async entry => { | ||
const blob = await entry.getData(new zip.BlobWriter("application/octet-stream")); | ||
return compareResult(blob, ENTRIES_DATA_PASS2.find(otherEntry => otherEntry.name == entry.filename).blob); | ||
})); | ||
if (!results.includes(false) && !results2.includes(false)) { | ||
@@ -51,0 +52,0 @@ document.body.innerHTML = "ok"; |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
746788
94
12640