@zip.js/zip.js
Advanced tools
Comparing version 2.0.9 to 2.0.10
@@ -1,1 +0,1 @@ | ||
!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="HTTP Range not supported",s="text/plain";class r{constructor(){this.size=0}init(){this.initialized=!0}}class i extends r{}class a extends r{writeUint8Array(e){this.size+=e.length}}class o extends i{constructor(e){super(),this.blobReader=new l(new Blob([e],{type:s}))}init(){super.init(),this.blobReader.init(),this.size=this.blobReader.size}readUint8Array(e,t){return this.blobReader.readUint8Array(e,t)}}class d extends a{constructor(e){super(),this.encoding=e,this.blob=new Blob([],{type:s})}writeUint8Array(e){super.writeUint8Array(e),this.blob=new Blob([this.blob,e.buffer],{type:s})}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 c 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),r=atob(this.dataURI.substring(s+this.dataStart,4*Math.ceil((e+t)/3)+this.dataStart)),i=e-3*Math.floor(s/4);for(let e=i;e<i+t;e++)n[e-i]=r.charCodeAt(e);return n}}class p extends a{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 l extends i{constructor(e){super(),this.blob=e,this.size=e.size}readUint8Array(e,t){const n=new FileReader;return new Promise(((s,r)=>{n.onload=e=>s(new Uint8Array(e.target.result)),n.onerror=r,n.readAsArrayBuffer(this.blob.slice(e,e+t))}))}}class m extends a{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 f 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,s)=>{const r=new XMLHttpRequest;r.addEventListener("load",(()=>{r.status<400?(this.size=Number(r.getResponseHeader("Content-Length")),"bytes"==r.getResponseHeader("Accept-Ranges")?e():s(new Error(n))):s(t+(r.statusText||r.status)+".")}),!1),r.addEventListener("error",s,!1),r.open("HEAD",this.url),r.send()}))}readUint8Array(e,n){return new Promise(((s,r)=>{const i=new XMLHttpRequest;i.open("GET",this.url),i.responseType="arraybuffer",i.setRequestHeader("Range","bytes="+e+"-"+(e+n-1)),i.addEventListener("load",(()=>{i.status<400?s(new Uint8Array(i.response)):r(t+(i.statusText||i.status)+".")}),!1),i.addEventListener("error",r,!1),i.send()}))}}class u extends a{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,r)=>{const i=new XMLHttpRequest;i.addEventListener("load",(()=>{i.status<400?(e.size||(e.size=Number(i.getResponseHeader("Content-Length"))||Number(i.response.byteLength)),e.data=new Uint8Array(i.response),s()):r(t+(i.statusText||i.status)+".")}),!1),i.addEventListener("error",r,!1),i.open("GET",n),i.responseType="arraybuffer",i.send()}))}const g=4294967295,v=65535,w=1347093252,y=1347094280,b=1347092738,k=1347093766,U=1347094022,z=1347094023,E=39169,A=2048;class R{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,r=0|e.length;s<r;s++)n=n>>>8^t[255&(n^e[s])];this.crc=n}get(){return~this.crc}}const D="Invalid pasword",j=16,F="raw",S={name:"PBKDF2"},I={name:"HMAC"},T="SHA-1",B={name:"AES-CTR"},L=Object.assign({hash:I},S),_=Object.assign({iterations:1e3,hash:{name:T}},S),C=Object.assign({hash:T},I),q=Object.assign({length:j},B),N=["deriveBits"],O=["sign"],M=528,W=10,P=[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],V=crypto.subtle;class Z{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(r=0)=>{if(r+j<=s.length-W){const e=s.subarray(r,r+j),i=await V.decrypt(Object.assign({counter:this.counter},q),this.keys.decrypt,e);return K(this.counter),n.set(new Uint8Array(i),r),t(r+j)}return this.pendingInput=s.subarray(r),this.signed&&(this.input=Y(this.input,e)),n};if(this.password){const t=e.subarray(0,18);await async function(e,t,n){e.counter=new Uint8Array(P);const s=t.subarray(0,16),r=t.subarray(16),i=(new TextEncoder).encode(n),a=await V.importKey(F,i,L,!1,N),o=await V.deriveBits(Object.assign({salt:s},_),a,528),d=new Uint8Array(o),c=d.subarray(64);if(e.keys={decrypt:await V.importKey(F,d.subarray(0,32),B,!0,["decrypt"]),authentication:await V.importKey(F,d.subarray(32,64),C,!1,O),passwordVerification:c},c[0]!=r[0]||c[1]!=r[1])throw new Error(D)}(this,t,this.password),this.password=null,e=e.subarray(18)}let n=new Uint8Array(e.length-W-(e.length-W)%j),s=e;return this.pendingInput.length&&(s=Y(this.pendingInput,e),n=X(n,s.length-W-(s.length-W)%j)),t()}async flush(){const e=this.pendingInput,t=this.keys,n=e.subarray(0,e.length-W),s=e.subarray(e.length-W);let r=new Uint8Array(0);if(n.length){const e=await V.decrypt(Object.assign({counter:this.counter},q),t.decrypt,n);r=new Uint8Array(e)}let i=!0;if(this.signed){const e=await V.sign(I,t.authentication,this.input.subarray(0,this.input.length-W)),n=new Uint8Array(e);this.input=null;for(let e=0;e<W;e++)n[e]!=s[e]&&(i=!1)}return{valid:i,data:r}}}class H{constructor(e){this.password=e,this.output=new Uint8Array(0),this.pendingInput=new Uint8Array(0)}async append(e){const t=async(r=0)=>{if(r+j<=e.length){const i=e.subarray(r,r+j),a=await V.encrypt(Object.assign({counter:this.counter},q),this.keys.encrypt,i);return K(this.counter),s.set(new Uint8Array(a),r+n.length),t(r+j)}return this.pendingInput=e.subarray(r),this.output=Y(this.output,s),s};let n=new Uint8Array(0);this.password&&(n=await async function(e,t){e.counter=new Uint8Array(P);const n=crypto.getRandomValues(new Uint8Array(16)),s=(new TextEncoder).encode(t),r=await V.importKey(F,s,L,!1,N),i=await V.deriveBits(Object.assign({salt:n},_),r,M),a=new Uint8Array(i);return e.keys={encrypt:await V.importKey(F,a.subarray(0,32),B,!0,["encrypt"]),authentication:await V.importKey(F,a.subarray(32,64),C,!1,O),passwordVerification:a.subarray(64)},Y(n,e.keys.passwordVerification)}(this,this.password),this.password=null);let s=new Uint8Array(n.length+e.length-e.length%j);return s.set(n,0),this.pendingInput.length&&(e=Y(this.pendingInput,e),s=X(s,e.length-e.length%j)),t()}async flush(){let e=new Uint8Array(0);if(this.pendingInput.length){const t=await V.encrypt(Object.assign({counter:this.counter},q),this.keys.encrypt,this.pendingInput);e=new Uint8Array(t),this.output=Y(this.output,e)}const t=await V.sign(I,this.keys.authentication,this.output.subarray(18));this.output=null;const n=new Uint8Array(t).subarray(0,W);return{data:Y(e,n),signature:n}}}function K(e){for(let t=0;t<16;t++){if(255!=e[t]){e[t]++;break}e[t]=0}}function Y(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 X(e,t){if(t&&t>e.length){const n=e;(e=new Uint8Array(t)).set(n,0)}return e}const G="deflate",J="inflate",Q="Invalid signature";class ${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 R,this.decrypt=this.encrypted&&new Z(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(Q);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(Q)}return this.compressed&&(t=await this.inflate.append(t)||new Uint8Array(0),await this.inflate.flush()),{data:t,signature:e}}}class ee{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 R,this.encrypt=this.encrypted&&new H(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 te="init",ne="append",se="flush",re="message",ie="z-worker.js",ae={deflate:[ie,"deflate.js"],inflate:[ie,"inflate.js"]},oe={pool:[],pendingRequests:[]};function de(e,t){const n=oe.pool,s=!(t.inputCompressed||t.inputSigned||t.inputEncrypted||t.outputCompressed||t.outputSigned||t.outputEncrypted);let r;if(t.useWebWorkers||void 0===t.useWebWorkers&&e.useWebWorkers&&!s){const n=t.codecType;e.workerScripts?(i=e.workerScripts[n],r="undefined"!=typeof document?i.map((e=>new URL(e,document.baseURI).href)):i):(r=ae[n].slice(0),r[0]=(e.workerScriptsPath||"")+r[0])}var i;if(n.length<e.maxWorkers){const e={};return n.push(e),ce(e,t,r)}{const e=n.find((e=>!e.busy));return e?ce(e,t,r):new Promise((e=>oe.pendingRequests.push({resolve:e,options:t,scripts:r})))}}function ce(e,t,n){return e.busy=!0,e.options=t,e.scripts=n,n?function(e){let t;e.interface||(e.worker=new Worker(e.scripts[0]),e.worker.addEventListener(re,r,!1),e.interface={append:e=>n({type:ne,data:e}),flush:()=>n({type:se})});return e.interface;async function n(n){if(!t){const t=e.scripts.slice(1);await s(Object.assign({type:te,options:e.options,scripts:t}))}return s(n)}function s(n){const s=e.worker,r=new Promise(((e,n)=>t={resolve:e,reject:n}));try{if(n.data)try{s.postMessage(n,[n.data.buffer])}catch(e){s.postMessage(n)}else s.postMessage(n)}catch(n){t.reject(n),t=null,pe(e)}return r}function r(n){const s=n.data;if(t){const n=s.error;if(n){const s=new Error(n.message);s.stack=n.stack,t.reject(s),t=null,pe(e)}else s.type!=te&&s.type!=se&&s.type!=ne||(s.type==se?(t.resolve({data:new Uint8Array(s.data),signature:s.signature}),t=null,pe(e)):t.resolve(s.data&&new Uint8Array(s.data)))}}}(e):function(e){const t=function(e){return e.codecType.startsWith(G)?new ee(e):e.codecType.startsWith(J)?new $(e):void 0}(e.options);return{async append(n){try{return await t.append(n)}catch(t){throw pe(e),t}},async flush(){try{return await t.flush()}finally{pe(e)}}}}(e)}function pe(e){if(e.busy=!1,oe.pendingRequests.length){const[{resolve:t,options:n,scripts:s}]=oe.pendingRequests.splice(0,1);t(ce(e,n,s))}else e.worker&&e.worker.terminate(),oe.pool=oe.pool.filter((t=>t!=e))}async function le(e,t,n,s,r,i,a){const o=Math.max(i.chunkSize,64);return async function i(d=0,c=0){const p=d*o;if(p<r){const l=await t.readUint8Array(p+s,Math.min(o,r-p)),m=await e.append(l);return c+=await me(n,m),a.onprogress&&a.onprogress(p+l.length,r),i(d+1,c)}{const t=await e.flush();return c+=await me(n,t.data),{signature:t.signature,length:c}}}()}async function me(e,t){return t.length&&await e.writeUint8Array(t),t.length}const fe="File format is not recognized",he="End of central directory not found",ue="End of Zip64 central directory not found",xe="End of Zip64 central directory locator not found",ge="Central directory header not found",ve="Local file header not found",we="Zip64 extra field not found",ye="File contains encrypted entry",be="Encryption not supported",ke="Compression method not supported",Ue="utf-8",ze=["uncompressedSize","compressedSize","offset"],Ee=["\0","☺","☻","♥","♦","♣","♠","•","◘","○","◙","♂","♀","♪","♫","☼","►","◄","↕","‼","¶","§","▬","↨","↑","↓","→","←","∟","↔","▲","▼"," ","!",'"',"#","$","%","&","'","(",")","*","+",",","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","<","=",">","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","\\","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~","⌂","Ç","ü","é","â","ä","à","å","ç","ê","ë","è","ï","î","ì","Ä","Å","É","æ","Æ","ô","ö","ò","û","ù","ÿ","Ö","Ü","¢","£","¥","₧","ƒ","á","í","ó","ú","ñ","Ñ","ª","º","¿","⌐","¬","½","¼","¡","«","»","░","▒","▓","│","┤","╡","╢","╖","╕","╣","║","╗","╝","╜","╛","┐","└","┴","┬","├","─","┼","╞","╟","╚","╔","╩","╦","╠","═","╬","╧","╨","╤","╥","╙","╘","╒","╓","╫","╪","┘","┌","█","▄","▌","▐","▀","α","ß","Γ","π","Σ","σ","µ","τ","Φ","Θ","Ω","δ","∞","φ","ε","∩","≡","±","≥","≤","⌠","⌡","÷","≈","°","∙","·","√","ⁿ","²","■"," "];class Ae{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),r=new DataView(s.buffer),i=void 0===t.password?this.options.password:t.password;let a=i&&i.length&&i;if(this.extraFieldAES){if(99!=this.extraFieldAES.originalCompressionMethod)throw new Error(ke);if(3!=this.extraFieldAES.strength)throw new Error(be)}if(0!=this.compressionMethod&&8!=this.compressionMethod)throw new Error(ke);if(r.getUint32(0,!1)!=w)throw new Error(ve);const o=this.localDirectory={};Re(o,r,4),o.rawExtraField=s.subarray(this.offset+30+o.filenameLength,this.offset+30+o.filenameLength+o.extraFieldLength),De(this,o,r,4);let d=this.offset+30+o.filenameLength+o.extraFieldLength;const c=this.bitFlag.encrypted&&o.bitFlag.encrypted;if(c&&!a)throw new Error(ye);const p=await de(this.config,{codecType:J,inputPassword:a,inputSigned:void 0===t.checkSignature?this.options.checkSignature:t.checkSignature,inputSignature:this.signature,inputCompressed:0!=this.compressionMethod,inputEncrypted:c,useWebWorkers:void 0===t.useWebWorkers?this.options.useWebWorkers:t.useWebWorkers});return e.initialized||await e.init(),await le(p,n,e,d,this.compressedSize,this.config,{onprogress:t.onprogress}),e.getData()}}function Re(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:(s&A)==A},e.encrypted=e.bitFlag.encrypted,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 De(e,t,n,s){const r=t.rawExtraField,i=t.extraField=new Map,a=new DataView(new Uint8Array(r).buffer);let o=0;try{for(;o<r.length;){const e=a.getUint16(o,!0),t=a.getUint16(o+2,!0);i.set(e,{type:e,data:r.slice(o+4,o+4+t)}),o+=4+t}}catch(e){}const d=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);const c=t.extraFieldZip64=i.get(1);c&&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=ze.filter((e=>t[e]==g));for(let t=0;t<s.length;t++)e[s[t]]=e.values[t];ze.forEach((n=>{if(t[n]==g){if(!e||void 0===e[n])throw new Error(we);t[n]=e[n]}}))}(c,t);const p=t.extraFieldUnicodePath=i.get(28789);p&&je(p,"filename","rawFilename",t,e);let l=t.extraFieldUnicodeComment=i.get(25461);l&&je(l,"comment","rawComment",t,e);const m=t.extraFieldAES=i.get(39169);m?function(e,t,n){if(e){const s=new DataView(e.data.buffer);e.vendorVersion=s.getUint8(0),e.vendorId=s.getUint8(2);const r=s.getUint8(4);e.strength=r,e.originalCompressionMethod=n,t.compressionMethod=e.compressionMethod=s.getUint16(5,!0)}else t.compressionMethod=n}(m,t,d):t.compressionMethod=d,8==t.compressionMethod&&(t.bitFlag.enhancedDeflating=16!=(16&t.rawBitFlag))}function je(e,t,n,s,r){const i=new DataView(e.data.buffer);e.version=i.getUint8(0),e.signature=i.getUint32(1,!0);const a=new R;a.append(r[n]);const o=new DataView(new Uint8Array(4).buffer);o.setUint32(0,a.get()),e[t]=(new TextDecoder).decode(e.data.subarray(5)),r.bitFlag.languageEncodingFlag||e.signature!=o.getUint32(0,!1)||(s[t]=e[t])}function Fe(e,t){if(t&&"cp437"!=t.trim().toLowerCase())return new TextDecoder(t).decode(e);{let t="";for(let n=0;n<e.length;n++)t+=Ee[e[n]];return t}}const Se="File already exists",Ie="Zip file comment exceeds 64KB",Te="File entry comment exceeds 64KB",Be="File entry name exceeds 64KB",Le="Version exceeds 65535",_e="The minimum year for the date is 1980",Ce="Extra field type exceeds 65535",qe="Extra field data exceeds 64KB",Ne=new Uint8Array([7,0,2,0,65,69,3,0,0]);const Oe="function";function Me(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==Oe)this.codec.onData=s;else{if(typeof this.codec.on!=Oe)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 We={chunkSize:524288,maxWorkers:"undefined"!=typeof navigator&&navigator.hardwareConcurrency||2,workerScriptsPath:void 0,useWebWorkers:!0};let Pe=Object.assign({},We);class Ve 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){const r=new Uint8Array(4);if(new DataView(r.buffer).setUint32(0,t),e.size<n)throw new Error(fe);const i=n+s;let a=n,o=await d(a);o||(o=await d(Math.min(i,e.size)));return o;async function d(t){const s=e.size-t,i=await e.readUint8Array(s,t);for(let e=i.length-n;e>=0;e--)if(i[e]==r[0]&&i[e+1]==r[1]&&i[e+2]==r[2]&&i[e+3]==r[3])return{offset:s,buffer:i.slice(e,e+n).buffer}}}(e,k,22,v);if(!t)throw new Error(he);const n=new DataView(t.buffer);let s,r=n.getUint32(16,!0),i=n.getUint16(8,!0);if(r==g||i==v){s=!0;const n=await e.readUint8Array(t.offset-20,20),a=new DataView(n.buffer);if(Number(a.getUint32(0,!1))!=z)throw new Error(ue);r=Number(a.getBigUint64(8,!0));const o=await e.readUint8Array(r,56),d=new DataView(o.buffer);if(Number(d.getUint32(0,!1))!=U)throw new Error(xe);i=Number(d.getBigUint64(24,!0)),r-=Number(d.getBigUint64(40,!0))}if(r<0||!s&&(r>=e.size||i>=v))throw new Error(fe);const a=await e.readUint8Array(r,e.size-r),o=new DataView(a.buffer),d=[];let c=0;for(let e=0;e<i;e++){const e=new Ae(this.reader,this.config,this.options);if(o.getUint32(c,!1)!=b)throw new Error(ge);e.compressedSize=0,e.uncompressedSize=0,Re(e,o,c+6),e.commentLength=o.getUint16(c+32,!0),e.directory=16==(16&o.getUint8(c+38)),e.offset=o.getUint32(c+42,!0),e.rawFilename=a.subarray(c+46,c+46+e.filenameLength),e.filename=Fe(e.rawFilename,e.bitFlag.languageEncodingFlag?Ue:this.options.filenameEncoding),!e.directory&&e.filename&&"/"==e.filename.charAt(e.filename.length-1)&&(e.directory=!0),e.rawExtraField=a.subarray(c+46+e.filenameLength,c+46+e.filenameLength+e.extraFieldLength),De(e,e,o,c+6),e.rawComment=a.subarray(c+46+e.filenameLength+e.extraFieldLength,c+46+e.filenameLength+e.extraFieldLength+e.commentLength),e.comment=Fe(e.rawComment,e.bitFlag.languageEncodingFlag?Ue:this.options.commentEncoding),d.push(e),c+=46+e.filenameLength+e.extraFieldLength+e.commentLength}return d}async close(){}}{constructor(e,t){super(e,t,Pe)}}class Ze 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.length&&"/"==e.charAt(e.length-1)||(e+="/"),this.files.has(e))throw new Error(Se);if(n.rawFilename=(new TextEncoder).encode(e),n.rawFilename.length>v)throw new Error(Be);if(n.comment=n.comment||"",n.rawComment=(new TextEncoder).encode(n.comment),n.rawComment.length>v)throw new Error(Te);if(n.version=this.options.version||n.version||0,n.version>v)throw new Error(Le);if(n.lastModDate=n.lastModDate||new Date,n.lastModDate.getFullYear()<1980)throw new Error(_e);const s=n.extraField;if(s){let e=4,t=0;s.forEach((t=>e+=t.length));const r=n.rawExtraField=new Uint8Array(e);s.forEach(((e,n)=>{if(n>v)throw new Error(Ce);if(e.length>v)throw new Error(qe);r.set(new Uint16Array([n]),t),r.set(new Uint16Array([e.length]),t+2),r.set(e,t+4),t+=4+e.length}))}n.zip64=n.zip64||this.zip64,await async function(e,t,n,s){const r=e.files,i=e.writer;let a;r.set(t,null);try{let o,d;try{s.bufferedWrite||e.options.bufferedWrite||e.lockWrite?(o=new u,o.init()):(e.lockWrite=new Promise((e=>a=e)),i.initialized||await i.init(),o=i),(e.offset>=g||n&&(n.size>=g||e.offset+n.size>=g))&&(s.zip64=!0),d=await async function(e,t,n,s,r,i){const a=i.rawFilename,o=i.lastModDate,d=new Uint8Array(26),c=new DataView(d.buffer),p=void 0===i.password?r.password:i.password,l=p&&p.length&&p,m=void 0===i.level?r.level:i.level,f=0!==m&&!i.directory,h=void 0===p||!p.length,u=i.zip64;let x;if(l){x=new Uint8Array(Ne.length+2);new DataView(x.buffer).setUint16(0,E,!0),x.set(Ne,2)}else x=new Uint8Array(0);const v={version:i.version||20,zip64:u,headerArray:d,directory:i.directory,filename:e,rawFilename:a,comment:i.comment,rawComment:i.rawComment,extraFieldZip64:u?new Uint8Array(28):new Uint8Array(0),extraFieldAES:x,rawExtraField:i.rawExtraField||new Uint8Array(0)};let b=2056,k=0;f&&(k=8);u&&(v.version=v.version>45?v.version:45);l&&(v.encrypted=!0,v.version=v.version>51?v.version:51,b|=1,k=99,f&&(v.extraFieldAES[9]=8));c.setUint16(0,v.version,!0),c.setUint16(2,b,!0),c.setUint16(4,k,!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 U=new Uint8Array(30+a.length);let z;if(new DataView(U.buffer).setUint32(0,w),U.set(d,4),U.set(a,30),t){t.initialized||await t.init();const e=await de(s,{codecType:G,level:m,outputPassword:p,outputSigned:h,outputCompressed:f,outputEncrypted:Boolean(p),useWebWorkers:void 0===i.useWebWorkers?r.useWebWorkers:i.useWebWorkers});await n.writeUint8Array(U),z=await le(e,t,n,0,t.size,s,{onprogress:i.onprogress}),v.compressedSize=z.length}else await n.writeUint8Array(U);const A=new Uint8Array(u?24:16),R=new DataView(A.buffer);if(R.setUint32(0,y),t)if(l||void 0===z.signature||(c.setUint32(10,z.signature,!0),R.setUint32(4,z.signature,!0)),u){c.setUint32(14,g,!0),R.setBigUint64(8,BigInt(v.compressedSize),!0),c.setUint32(18,g,!0),R.setBigUint64(16,BigInt(t.size),!0);const e=new DataView(v.extraFieldZip64.buffer);e.setUint16(0,1,!0),e.setUint16(2,24,!0),e.setBigUint64(4,BigInt(t.size),!0),e.setBigUint64(12,BigInt(v.compressedSize),!0)}else c.setUint32(14,v.compressedSize,!0),R.setUint32(8,v.compressedSize,!0),c.setUint32(18,t.size,!0),R.setUint32(12,t.size,!0);return await n.writeUint8Array(A),v.length=U.length+(z?z.length:0)+A.length,v}(t,n,o,e.config,e.options,s)}catch(e){throw r.delete(t),e}if(r.set(t,d),o!=i&&(e.lockWrite&&await e.lockWrite,await i.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=new Uint8Array(0)){const t=this.writer,n=this.files;let s=0,r=0,i=this.offset,a=n.size;if(e.length){if(!(e.length<=v))throw new Error(Ie);d.setUint16(s+20,e.length,!0)}for(const[,e]of n)r+=46+e.rawFilename.length+e.rawComment.length+e.extraFieldZip64.length+e.extraFieldAES.length+e.rawExtraField.length;(i+r>=g||a>=v)&&(this.zip64=!0);const o=new Uint8Array(r+(this.zip64?98:22)),d=new DataView(o.buffer);for(const[,e]of n){const t=e.rawFilename,n=e.extraFieldZip64,r=e.extraFieldAES,i=n.length+r.length+e.rawExtraField.length;d.setUint32(s,b),d.setUint16(s+4,e.version,!0),o.set(e.headerArray,s+6),d.setUint16(s+30,i,!0),d.setUint16(s+32,e.rawComment.length,!0),e.directory&&d.setUint8(s+38,16),e.zip64?d.setUint32(s+42,g,!0):d.setUint32(s+42,e.offset,!0),o.set(t,s+46),o.set(n,s+46+t.length),o.set(r,s+46+t.length+n.length),o.set(e.rawExtraField,46+t.length+n.length+r.length),o.set(e.rawComment,s+46+t.length+i),s+=46+t.length+i+e.rawComment.length}return this.zip64&&(d.setUint32(s,U),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(r),!0),d.setBigUint64(s+48,BigInt(i),!0),d.setUint32(s+56,z),d.setBigUint64(s+64,BigInt(i+r),!0),d.setUint32(s+72,1,!0),a=v,i=g,s+=76),d.setUint32(s,k),d.setUint16(s+8,a,!0),d.setUint16(s+10,a,!0),d.setUint32(s+12,r,!0),d.setUint32(s+16,i,!0),await t.writeUint8Array(o),await t.writeUint8Array(e),t.getData()}}{constructor(e,t){super(e,t,Pe)}}const He=524288;class Ke{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.data=n.data,this.id=e.entries.length,this.parent=s,this.children=[],this.uncompressedSize=0,e.entries.push(this),s&&this.parent.children.push(this)}moveTo(e){if(!e.directory)throw new Error("Target entry is not a directory");if(e.isDescendantOf(this))throw new Error("Entry is a ancestor of target entry");if(this!=e){if(e.getChildByName(this.name))throw new Error("Entry filename already exists");et(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 Ye extends Ke{constructor(e,t,n,s){super(e,t,n,s),this.Reader=n.Reader,this.Writer=n.Writer,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(r=0){const i=r*He;if(n.onprogress&&n.onprogress(i,e.size),i<e.size){const n=await e.readUint8Array(i,Math.min(He,e.size-i));return await t.writeUint8Array(n),s(r+1)}return t.getData()}}(this.reader,e,t))}getText(e,t){return this.getData(new d(e),t)}getBlob(e,t){return this.getData(new m(e),t)}getData64URI(e,t){return this.getData(new p(e),t)}}class Xe extends Ke{constructor(e,t,n,s){super(e,t,n,s),this.directory=!0}addDirectory(e){return nt(this,e,null,!0)}addText(e,t){return nt(this,e,{data:t,Reader:o,Writer:d})}addBlob(e,t){return nt(this,e,{data:t,Reader:l,Writer:m})}addData64URI(e,t){return nt(this,e,{data:t,Reader:c,Writer:p})}addHttpContent(e,t,n={}){return nt(this,e,{data:t,Reader:n.useRangeHeader?h:f})}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 r(e){e.readEntries((n=>{n.length?(s=s.concat(n),r(e)):t(s)}),n)}e.isDirectory&&r(e.createReader()),e.isFile&&t(s)}))}async function s(e,t){const r=await n(t);for(const t of r)t.isDirectory&&await s(e.addDirectory(t.name)),await new Promise(((n,s)=>{t.isFile&&t.file((s=>{const r=e.addBlob(t.name,s);r.uncompressedSize=s.size,n(r)}),s)}))}}(this,e)}async addData(e,t){return nt(this,e,t)}async importBlob(e,t={}){await this.importZip(new l(e),t)}async importData64URI(e,t={}){await this.importZip(new c(e),t)}async importHttpContent(e,t={}){await this.importZip(t.useRangeHeader?new h(e):new f(e),t)}async exportBlob(e={}){return this.exportZip(new m("application/zip"),e)}async exportData64URI(e={}){return this.exportZip(new p("application/zip"),e)}async importZip(e,t){await e.init();const n=new Ve(e,t),s=await n.getEntries();let r=0;const i=Je(s,"compressedSize");s.forEach((e=>{let n=this,s=e.filename.split("/"),a=s.pop();if(s.forEach((e=>n=n.getChildByName(e)||new Xe(this.fs,e,null,n))),!e.directory){let s=r;nt(n,a,{data:e,Reader:Qe(Object.assign({},{onprogress:e=>{t.onprogress&&t.onprogress(s+e,i)}}))}),r+=e.compressedSize}}))}async exportZip(e,t){await $e(this);const n=new Ze(e,t);return await async function(e,t,n,s){let r=0;async function i(e,t){async function a(){let a=0;for(const o of t.children){let t=r;await e.add(o.getFullname(),o.reader,Object.assign({directory:o.directory},{onprogress:e=>{s.onprogress&&s.onprogress(t+a+e,n)}})),r+=o.uncompressedSize,await i(e,o),a++}}await a()}await i(e,t)}(n,this,Je([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 Ge={FS:class{constructor(){tt(this)}remove(e){et(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){tt(this),await this.root.importBlob(e)}async importData64URI(e){tt(this),await this.root.importData64URI(e)}async importHttpContent(e,t){this.entries=[],this.root=new Xe(this),await this.root.importHttpContent(e,t)}async exportBlob(e){return this.root.exportBlob(e)}async exportData64URI(e){return this.root.exportData64URI(e)}},ZipDirectoryEntry:Xe,ZipFileEntry:Ye};function Je(e,t){let n=0;return e.forEach((function e(s){n+=s[t],s.children&&s.children.forEach(e)})),n}function Qe(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 m,e);this.data=t,this.blobReader=new l(t)}return this.blobReader.readUint8Array(t,n)}async init(){this.size=this.entry.uncompressedSize}}}async function $e(e){if(e.children.length)for(const t of e.children)t.directory?await $e(t):(t.reader=new t.Reader(t.data),await t.reader.init(),t.uncompressedSize=t.reader.size)}function et(e){const t=e.parent.children;t.forEach(((n,s)=>{n.id==e.id&&t.splice(s,1)}))}function tt(e){e.entries=[],e.root=new Xe(e)}function nt(e,t,n,s){if(e.directory)return s?new Xe(e.fs,t,n,e):new Ye(e.fs,t,n,e);throw new Error("Parent entry is not a directory")}const st={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"]}},rt=(()=>{const e={};for(let t in st)if(st.hasOwnProperty(t))for(let n in st[t])if(st[t].hasOwnProperty(n)){const s=st[t][n];if("string"==typeof s)e[s]=t+"/"+n;else for(let r=0;r<s.length;r++)e[s[r]]=t+"/"+n}return e})();e.BlobReader=l,e.BlobWriter=m,e.Data64URIReader=c,e.Data64URIWriter=p,e.ERR_BAD_FORMAT=fe,e.ERR_CENTRAL_DIRECTORY_NOT_FOUND=ge,e.ERR_DUPLICATED_NAME=Se,e.ERR_ENCRYPTED=ye,e.ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND=xe,e.ERR_EOCDR_NOT_FOUND=he,e.ERR_EOCDR_ZIP64_NOT_FOUND=ue,e.ERR_EXTRAFIELD_ZIP64_NOT_FOUND=we,e.ERR_HTTP_RANGE=n,e.ERR_INVALID_COMMENT=Ie,e.ERR_INVALID_DATE=_e,e.ERR_INVALID_ENTRY_COMMENT=Te,e.ERR_INVALID_ENTRY_NAME=Be,e.ERR_INVALID_EXTRAFIELD_DATA=qe,e.ERR_INVALID_EXTRAFIELD_TYPE=Ce,e.ERR_INVALID_PASSORD=D,e.ERR_INVALID_SIGNATURE=Q,e.ERR_INVALID_VERSION=Le,e.ERR_LOCAL_FILE_HEADER_NOT_FOUND=ve,e.ERR_UNSUPPORTED_COMPRESSION=ke,e.ERR_UNSUPPORTED_ENCRYPTION=be,e.HttpRangeReader=h,e.HttpReader=f,e.Reader=i,e.TextReader=o,e.TextWriter=d,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=u,e.Writer=a,e.ZipReader=Ve,e.ZipWriter=Ze,e.configure=function(e){if(Pe=Object.assign({},Pe,e),null!=Pe.workerScripts&&null!=Pe.workerScriptsPath)throw new Error("Either workerScripts or workerScriptsPath may be set, not both");if(Pe.workerScripts){if(Pe.workerScripts.deflate&&!Array.isArray(Pe.workerScripts.deflate))throw new Error("workerScripts.deflate must be an array");if(Pe.workerScripts.inflate&&!Array.isArray(Pe.workerScripts.inflate))throw new Error("workerScripts.inflate must be an array")}},e.fs=Ge,e.getMimeType=function(e){return e&&rt[e.split(".").pop().toLowerCase()]||"application/octet-stream"},e.initShimAsyncCodec=(e,t={})=>({ZipDeflate:Me(e.Deflate,t.deflate),ZipInflate:Me(e.Inflate,t.inflate)}),Object.defineProperty(e,"__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="HTTP Range not supported",s="text/plain";class r{constructor(){this.size=0}init(){this.initialized=!0}}class i extends r{}class a extends r{writeUint8Array(e){this.size+=e.length}}class o extends i{constructor(e){super(),this.blobReader=new l(new Blob([e],{type:s}))}init(){super.init(),this.blobReader.init(),this.size=this.blobReader.size}readUint8Array(e,t){return this.blobReader.readUint8Array(e,t)}}class d extends a{constructor(e){super(),this.encoding=e,this.blob=new Blob([],{type:s})}writeUint8Array(e){super.writeUint8Array(e),this.blob=new Blob([this.blob,e.buffer],{type:s})}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 c 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),r=atob(this.dataURI.substring(s+this.dataStart,4*Math.ceil((e+t)/3)+this.dataStart)),i=e-3*Math.floor(s/4);for(let e=i;e<i+t;e++)n[e-i]=r.charCodeAt(e);return n}}class p extends a{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 l extends i{constructor(e){super(),this.blob=e,this.size=e.size}readUint8Array(e,t){const n=new FileReader;return new Promise(((s,r)=>{n.onload=e=>s(new Uint8Array(e.target.result)),n.onerror=r,n.readAsArrayBuffer(this.blob.slice(e,e+t))}))}}class m extends a{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 f 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,s)=>{const r=new XMLHttpRequest;r.addEventListener("load",(()=>{r.status<400?(this.size=Number(r.getResponseHeader("Content-Length")),"bytes"==r.getResponseHeader("Accept-Ranges")?e():s(new Error(n))):s(t+(r.statusText||r.status)+".")}),!1),r.addEventListener("error",s,!1),r.open("HEAD",this.url),r.send()}))}readUint8Array(e,n){return new Promise(((s,r)=>{const i=new XMLHttpRequest;i.open("GET",this.url),i.responseType="arraybuffer",i.setRequestHeader("Range","bytes="+e+"-"+(e+n-1)),i.addEventListener("load",(()=>{i.status<400?s(new Uint8Array(i.response)):r(t+(i.statusText||i.status)+".")}),!1),i.addEventListener("error",r,!1),i.send()}))}}class u extends a{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,r)=>{const i=new XMLHttpRequest;i.addEventListener("load",(()=>{i.status<400?(e.size||(e.size=Number(i.getResponseHeader("Content-Length"))||Number(i.response.byteLength)),e.data=new Uint8Array(i.response),s()):r(t+(i.statusText||i.status)+".")}),!1),i.addEventListener("error",r,!1),i.open("GET",n),i.responseType="arraybuffer",i.send()}))}const g=4294967295,v=65535,w=1347093252,y=1347094280,b=1347092738,k=1347093766,U=1347094022,z=1347094023,E=39169,A=2048;class R{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,r=0|e.length;s<r;s++)n=n>>>8^t[255&(n^e[s])];this.crc=n}get(){return~this.crc}}const D="Invalid pasword",j=16,F="raw",S={name:"PBKDF2"},I={name:"HMAC"},T="SHA-1",B={name:"AES-CTR"},L=Object.assign({hash:I},S),_=Object.assign({iterations:1e3,hash:{name:T}},S),C=Object.assign({hash:T},I),q=Object.assign({length:j},B),N=["deriveBits"],O=["sign"],M=528,W=10,P=[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],V=crypto.subtle;class Z{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(r=0)=>{if(r+j<=s.length-W){const e=s.subarray(r,r+j),i=await V.decrypt(Object.assign({counter:this.counter},q),this.keys.decrypt,e);return K(this.counter),n.set(new Uint8Array(i),r),t(r+j)}return this.pendingInput=s.subarray(r),this.signed&&(this.input=Y(this.input,e)),n};if(this.password){const t=e.subarray(0,18);await async function(e,t,n){e.counter=new Uint8Array(P);const s=t.subarray(0,16),r=t.subarray(16),i=(new TextEncoder).encode(n),a=await V.importKey(F,i,L,!1,N),o=await V.deriveBits(Object.assign({salt:s},_),a,528),d=new Uint8Array(o),c=d.subarray(64);if(e.keys={decrypt:await V.importKey(F,d.subarray(0,32),B,!0,["decrypt"]),authentication:await V.importKey(F,d.subarray(32,64),C,!1,O),passwordVerification:c},c[0]!=r[0]||c[1]!=r[1])throw new Error(D)}(this,t,this.password),this.password=null,e=e.subarray(18)}let n=new Uint8Array(e.length-W-(e.length-W)%j),s=e;return this.pendingInput.length&&(s=Y(this.pendingInput,e),n=X(n,s.length-W-(s.length-W)%j)),t()}async flush(){const e=this.pendingInput,t=this.keys,n=e.subarray(0,e.length-W),s=e.subarray(e.length-W);let r=new Uint8Array(0);if(n.length){const e=await V.decrypt(Object.assign({counter:this.counter},q),t.decrypt,n);r=new Uint8Array(e)}let i=!0;if(this.signed){const e=await V.sign(I,t.authentication,this.input.subarray(0,this.input.length-W)),n=new Uint8Array(e);this.input=null;for(let e=0;e<W;e++)n[e]!=s[e]&&(i=!1)}return{valid:i,data:r}}}class H{constructor(e){this.password=e,this.output=new Uint8Array(0),this.pendingInput=new Uint8Array(0)}async append(e){const t=async(r=0)=>{if(r+j<=e.length){const i=e.subarray(r,r+j),a=await V.encrypt(Object.assign({counter:this.counter},q),this.keys.encrypt,i);return K(this.counter),s.set(new Uint8Array(a),r+n.length),t(r+j)}return this.pendingInput=e.subarray(r),this.output=Y(this.output,s),s};let n=new Uint8Array(0);this.password&&(n=await async function(e,t){e.counter=new Uint8Array(P);const n=crypto.getRandomValues(new Uint8Array(16)),s=(new TextEncoder).encode(t),r=await V.importKey(F,s,L,!1,N),i=await V.deriveBits(Object.assign({salt:n},_),r,M),a=new Uint8Array(i);return e.keys={encrypt:await V.importKey(F,a.subarray(0,32),B,!0,["encrypt"]),authentication:await V.importKey(F,a.subarray(32,64),C,!1,O),passwordVerification:a.subarray(64)},Y(n,e.keys.passwordVerification)}(this,this.password),this.password=null);let s=new Uint8Array(n.length+e.length-e.length%j);return s.set(n,0),this.pendingInput.length&&(e=Y(this.pendingInput,e),s=X(s,e.length-e.length%j)),t()}async flush(){let e=new Uint8Array(0);if(this.pendingInput.length){const t=await V.encrypt(Object.assign({counter:this.counter},q),this.keys.encrypt,this.pendingInput);e=new Uint8Array(t),this.output=Y(this.output,e)}const t=await V.sign(I,this.keys.authentication,this.output.subarray(18));this.output=null;const n=new Uint8Array(t).subarray(0,W);return{data:Y(e,n),signature:n}}}function K(e){for(let t=0;t<16;t++){if(255!=e[t]){e[t]++;break}e[t]=0}}function Y(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 X(e,t){if(t&&t>e.length){const n=e;(e=new Uint8Array(t)).set(n,0)}return e}const G="deflate",J="inflate",Q="Invalid signature";class ${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 R,this.decrypt=this.encrypted&&new Z(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(Q);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(Q)}return this.compressed&&(t=await this.inflate.append(t)||new Uint8Array(0),await this.inflate.flush()),{data:t,signature:e}}}class ee{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 R,this.encrypt=this.encrypted&&new H(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 te="init",ne="append",se="flush",re="message",ie="z-worker.js",ae={deflate:[ie,"deflate.js"],inflate:[ie,"inflate.js"]},oe={pool:[],pendingRequests:[]};function de(e,t){const n=oe.pool,s=!(t.inputCompressed||t.inputSigned||t.inputEncrypted||t.outputCompressed||t.outputSigned||t.outputEncrypted);let r;if(t.useWebWorkers||void 0===t.useWebWorkers&&e.useWebWorkers&&!s){const n=t.codecType;e.workerScripts?(i=e.workerScripts[n],r="undefined"!=typeof document?i.map((e=>new URL(e,document.baseURI).href)):i):(r=ae[n].slice(0),r[0]=(e.workerScriptsPath||"")+r[0])}var i;if(n.length<e.maxWorkers){const e={};return n.push(e),ce(e,t,r)}{const e=n.find((e=>!e.busy));return e?ce(e,t,r):new Promise((e=>oe.pendingRequests.push({resolve:e,options:t,scripts:r})))}}function ce(e,t,n){return e.busy=!0,e.options=t,e.scripts=n,n?function(e){let t;e.interface||(e.worker=new Worker(e.scripts[0]),e.worker.addEventListener(re,r,!1),e.interface={append:e=>n({type:ne,data:e}),flush:()=>n({type:se})});return e.interface;async function n(n){if(!t){const t=e.scripts.slice(1);await s(Object.assign({type:te,options:e.options,scripts:t}))}return s(n)}function s(n){const s=e.worker,r=new Promise(((e,n)=>t={resolve:e,reject:n}));try{if(n.data)try{s.postMessage(n,[n.data.buffer])}catch(e){s.postMessage(n)}else s.postMessage(n)}catch(n){t.reject(n),t=null,pe(e)}return r}function r(n){const s=n.data;if(t){const n=s.error;if(n){const s=new Error(n.message);s.stack=n.stack,t.reject(s),t=null,pe(e)}else s.type!=te&&s.type!=se&&s.type!=ne||(s.type==se?(t.resolve({data:new Uint8Array(s.data),signature:s.signature}),t=null,pe(e)):t.resolve(s.data&&new Uint8Array(s.data)))}}}(e):function(e){const t=function(e){return e.codecType.startsWith(G)?new ee(e):e.codecType.startsWith(J)?new $(e):void 0}(e.options);return{async append(n){try{return await t.append(n)}catch(t){throw pe(e),t}},async flush(){try{return await t.flush()}finally{pe(e)}}}}(e)}function pe(e){if(e.busy=!1,oe.pendingRequests.length){const[{resolve:t,options:n,scripts:s}]=oe.pendingRequests.splice(0,1);t(ce(e,n,s))}else e.worker&&e.worker.terminate(),oe.pool=oe.pool.filter((t=>t!=e))}async function le(e,t,n,s,r,i,a){const o=Math.max(i.chunkSize,64);return async function i(d=0,c=0){const p=d*o;if(p<r){const l=await t.readUint8Array(p+s,Math.min(o,r-p)),m=await e.append(l);return c+=await me(n,m),a.onprogress&&a.onprogress(p+l.length,r),i(d+1,c)}{const t=await e.flush();return c+=await me(n,t.data),{signature:t.signature,length:c}}}()}async function me(e,t){return t.length&&await e.writeUint8Array(t),t.length}const fe="File format is not recognized",he="End of central directory not found",ue="End of Zip64 central directory not found",xe="End of Zip64 central directory locator not found",ge="Central directory header not found",ve="Local file header not found",we="Zip64 extra field not found",ye="File contains encrypted entry",be="Encryption not supported",ke="Compression method not supported",Ue="utf-8",ze=["uncompressedSize","compressedSize","offset"],Ee=["\0","☺","☻","♥","♦","♣","♠","•","◘","○","◙","♂","♀","♪","♫","☼","►","◄","↕","‼","¶","§","▬","↨","↑","↓","→","←","∟","↔","▲","▼"," ","!",'"',"#","$","%","&","'","(",")","*","+",",","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","<","=",">","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","\\","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~","⌂","Ç","ü","é","â","ä","à","å","ç","ê","ë","è","ï","î","ì","Ä","Å","É","æ","Æ","ô","ö","ò","û","ù","ÿ","Ö","Ü","¢","£","¥","₧","ƒ","á","í","ó","ú","ñ","Ñ","ª","º","¿","⌐","¬","½","¼","¡","«","»","░","▒","▓","│","┤","╡","╢","╖","╕","╣","║","╗","╝","╜","╛","┐","└","┴","┬","├","─","┼","╞","╟","╚","╔","╩","╦","╠","═","╬","╧","╨","╤","╥","╙","╘","╒","╓","╫","╪","┘","┌","█","▄","▌","▐","▀","α","ß","Γ","π","Σ","σ","µ","τ","Φ","Θ","Ω","δ","∞","φ","ε","∩","≡","±","≥","≤","⌠","⌡","÷","≈","°","∙","·","√","ⁿ","²","■"," "];class Ae{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),r=new DataView(s.buffer),i=void 0===t.password?this.options.password:t.password;let a=i&&i.length&&i;if(this.extraFieldAES){if(99!=this.extraFieldAES.originalCompressionMethod)throw new Error(ke);if(3!=this.extraFieldAES.strength)throw new Error(be)}if(0!=this.compressionMethod&&8!=this.compressionMethod)throw new Error(ke);if(r.getUint32(0,!1)!=w)throw new Error(ve);const o=this.localDirectory={};Re(o,r,4),o.rawExtraField=s.subarray(this.offset+30+o.filenameLength,this.offset+30+o.filenameLength+o.extraFieldLength),De(this,o,r,4);let d=this.offset+30+o.filenameLength+o.extraFieldLength;const c=this.bitFlag.encrypted&&o.bitFlag.encrypted;if(c&&!a)throw new Error(ye);const p=await de(this.config,{codecType:J,inputPassword:a,inputSigned:void 0===t.checkSignature?this.options.checkSignature:t.checkSignature,inputSignature:this.signature,inputCompressed:0!=this.compressionMethod,inputEncrypted:c,useWebWorkers:void 0===t.useWebWorkers?this.options.useWebWorkers:t.useWebWorkers});return e.initialized||await e.init(),await le(p,n,e,d,this.compressedSize,this.config,{onprogress:t.onprogress}),e.getData()}}function Re(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:(s&A)==A},e.encrypted=e.bitFlag.encrypted,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 De(e,t,n,s){const r=t.rawExtraField,i=t.extraField=new Map,a=new DataView(new Uint8Array(r).buffer);let o=0;try{for(;o<r.length;){const e=a.getUint16(o,!0),t=a.getUint16(o+2,!0);i.set(e,{type:e,data:r.slice(o+4,o+4+t)}),o+=4+t}}catch(e){}const d=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);const c=t.extraFieldZip64=i.get(1);c&&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=ze.filter((e=>t[e]==g));for(let t=0;t<s.length;t++)e[s[t]]=e.values[t];ze.forEach((n=>{if(t[n]==g){if(!e||void 0===e[n])throw new Error(we);t[n]=e[n]}}))}(c,t);const p=t.extraFieldUnicodePath=i.get(28789);p&&je(p,"filename","rawFilename",t,e);let l=t.extraFieldUnicodeComment=i.get(25461);l&&je(l,"comment","rawComment",t,e);const m=t.extraFieldAES=i.get(39169);m?function(e,t,n){if(e){const s=new DataView(e.data.buffer);e.vendorVersion=s.getUint8(0),e.vendorId=s.getUint8(2);const r=s.getUint8(4);e.strength=r,e.originalCompressionMethod=n,t.compressionMethod=e.compressionMethod=s.getUint16(5,!0)}else t.compressionMethod=n}(m,t,d):t.compressionMethod=d,8==t.compressionMethod&&(t.bitFlag.enhancedDeflating=16!=(16&t.rawBitFlag))}function je(e,t,n,s,r){const i=new DataView(e.data.buffer);e.version=i.getUint8(0),e.signature=i.getUint32(1,!0);const a=new R;a.append(r[n]);const o=new DataView(new Uint8Array(4).buffer);o.setUint32(0,a.get()),e[t]=(new TextDecoder).decode(e.data.subarray(5)),r.bitFlag.languageEncodingFlag||e.signature!=o.getUint32(0,!1)||(s[t]=e[t])}function Fe(e,t){if(t&&"cp437"!=t.trim().toLowerCase())return new TextDecoder(t).decode(e);{let t="";for(let n=0;n<e.length;n++)t+=Ee[e[n]];return t}}const Se="File already exists",Ie="Zip file comment exceeds 64KB",Te="File entry comment exceeds 64KB",Be="File entry name exceeds 64KB",Le="Version exceeds 65535",_e="The minimum year for the date is 1980",Ce="Extra field type exceeds 65535",qe="Extra field data exceeds 64KB",Ne=new Uint8Array([7,0,2,0,65,69,3,0,0]);const Oe="function";function Me(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==Oe)this.codec.onData=s;else{if(typeof this.codec.on!=Oe)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 We={chunkSize:524288,maxWorkers:"undefined"!=typeof navigator&&navigator.hardwareConcurrency||2,workerScriptsPath:void 0,useWebWorkers:!0};let Pe=Object.assign({},We);class Ve extends class{constructor(e,t={},n={}){this.reader=e,this.options=t,this.config=n}async getEntries(e={}){const t=this.reader;t.initialized||await t.init();const n=await async function(e,t,n,s){const r=new Uint8Array(4);if(new DataView(r.buffer).setUint32(0,t),e.size<n)throw new Error(fe);const i=n+s;let a=n,o=await d(a);o||(o=await d(Math.min(i,e.size)));return o;async function d(t){const s=e.size-t,i=await e.readUint8Array(s,t);for(let e=i.length-n;e>=0;e--)if(i[e]==r[0]&&i[e+1]==r[1]&&i[e+2]==r[2]&&i[e+3]==r[3])return{offset:s,buffer:i.slice(e,e+n).buffer}}}(t,k,22,v);if(!n)throw new Error(he);const s=new DataView(n.buffer);let r,i=s.getUint32(16,!0),a=s.getUint16(8,!0);if(i==g||a==v){r=!0;const e=await t.readUint8Array(n.offset-20,20),s=new DataView(e.buffer);if(Number(s.getUint32(0,!1))!=z)throw new Error(ue);i=Number(s.getBigUint64(8,!0));const o=await t.readUint8Array(i,56),d=new DataView(o.buffer);if(Number(d.getUint32(0,!1))!=U)throw new Error(xe);a=Number(d.getBigUint64(24,!0)),i-=Number(d.getBigUint64(40,!0))}if(i<0||!r&&(i>=t.size||a>=v))throw new Error(fe);const o=await t.readUint8Array(i,t.size-i),d=new DataView(o.buffer),c=[];let p=0;for(let t=0;t<a;t++){const t=new Ae(this.reader,this.config,this.options);if(d.getUint32(p,!1)!=b)throw new Error(ge);t.compressedSize=0,t.uncompressedSize=0,Re(t,d,p+6),t.commentLength=d.getUint16(p+32,!0),t.directory=16==(16&d.getUint8(p+38)),t.offset=d.getUint32(p+42,!0),t.rawFilename=o.subarray(p+46,p+46+t.filenameLength);const n=void 0===e.filenameEncoding?this.options.filenameEncoding:e.filenameEncoding;t.filename=Fe(t.rawFilename,t.bitFlag.languageEncodingFlag?Ue:n),!t.directory&&t.filename&&"/"==t.filename.charAt(t.filename.length-1)&&(t.directory=!0),t.rawExtraField=o.subarray(p+46+t.filenameLength,p+46+t.filenameLength+t.extraFieldLength),De(t,t,d,p+6),t.rawComment=o.subarray(p+46+t.filenameLength+t.extraFieldLength,p+46+t.filenameLength+t.extraFieldLength+t.commentLength);const s=void 0===e.commentEncoding?this.options.commentEncoding:e.commentEncoding;t.comment=Fe(t.rawComment,t.bitFlag.languageEncodingFlag?Ue:s),c.push(t),p+=46+t.filenameLength+t.extraFieldLength+t.commentLength}return c}async close(){}}{constructor(e,t){super(e,t,Pe)}}class Ze 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.length&&"/"==e.charAt(e.length-1)||(e+="/"),this.files.has(e))throw new Error(Se);const s=(new TextEncoder).encode(e);if(s.length>v)throw new Error(Be);const r=(new TextEncoder).encode(n.comment||"");if(r.length>v)throw new Error(Te);const i=this.options.version||n.version||0;if(i>v)throw new Error(Le);const a=n.lastModDate||new Date;if(a.getFullYear()<1980)throw new Error(_e);let o=new Uint8Array(0);const d=n.extraField;if(d){let e=4,t=0;d.forEach((t=>e+=t.length)),o=new Uint8Array(e),d.forEach(((e,n)=>{if(n>v)throw new Error(Ce);if(e.length>v)throw new Error(qe);o.set(new Uint16Array([n]),t),o.set(new Uint16Array([e.length]),t+2),o.set(e,t+4),t+=4+e.length}))}let c=n.zip64||this.zip64;(this.offset>=g||t&&(t.size>=g||this.offset+t.size>=g))&&(c=!0),await async function(e,t,n,s){const r=e.files,i=e.writer;let a;r.set(t,null);try{let o,d;try{s.bufferedWrite||e.options.bufferedWrite||e.lockWrite?(o=new u,o.init()):(e.lockWrite=new Promise((e=>a=e)),i.initialized||await i.init(),o=i),d=await async function(e,t,n,s,r,i){const a=i.rawFilename,o=i.lastModDate,d=new Uint8Array(26),c=new DataView(d.buffer),p=void 0===i.password?r.password:i.password,l=p&&p.length&&p,m=void 0===i.level?r.level:i.level,f=0!==m&&!i.directory,h=void 0===p||!p.length,u=i.zip64;let x;if(l){x=new Uint8Array(Ne.length+2);new DataView(x.buffer).setUint16(0,E,!0),x.set(Ne,2)}else x=new Uint8Array(0);const v={version:i.version||20,zip64:u,headerArray:d,directory:i.directory,filename:e,rawFilename:a,comment:i.comment,rawComment:i.rawComment,extraFieldZip64:u?new Uint8Array(28):new Uint8Array(0),extraFieldAES:x,rawExtraField:i.rawExtraField};let b=2056,k=0;f&&(k=8);u&&(v.version=v.version>45?v.version:45);l&&(v.encrypted=!0,v.version=v.version>51?v.version:51,b|=1,k=99,f&&(v.extraFieldAES[9]=8));c.setUint16(0,v.version,!0),c.setUint16(2,b,!0),c.setUint16(4,k,!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 U=new Uint8Array(30+a.length);let z;if(new DataView(U.buffer).setUint32(0,w),U.set(d,4),U.set(a,30),t){t.initialized||await t.init();const e=await de(s,{codecType:G,level:m,outputPassword:p,outputSigned:h,outputCompressed:f,outputEncrypted:Boolean(p),useWebWorkers:void 0===i.useWebWorkers?r.useWebWorkers:i.useWebWorkers});await n.writeUint8Array(U),z=await le(e,t,n,0,t.size,s,{onprogress:i.onprogress}),v.compressedSize=z.length}else await n.writeUint8Array(U);const A=new Uint8Array(u?24:16),R=new DataView(A.buffer);if(R.setUint32(0,y),t)if(l||void 0===z.signature||(c.setUint32(10,z.signature,!0),R.setUint32(4,z.signature,!0)),u){c.setUint32(14,g,!0),R.setBigUint64(8,BigInt(v.compressedSize),!0),c.setUint32(18,g,!0),R.setBigUint64(16,BigInt(t.size),!0);const e=new DataView(v.extraFieldZip64.buffer);e.setUint16(0,1,!0),e.setUint16(2,24,!0),e.setBigUint64(4,BigInt(t.size),!0),e.setBigUint64(12,BigInt(v.compressedSize),!0)}else c.setUint32(14,v.compressedSize,!0),R.setUint32(8,v.compressedSize,!0),c.setUint32(18,t.size,!0),R.setUint32(12,t.size,!0);return await n.writeUint8Array(A),v.length=U.length+(z?z.length:0)+A.length,v}(t,n,o,e.config,e.options,s)}catch(e){throw r.delete(t),e}if(r.set(t,d),o!=i&&(e.lockWrite&&await e.lockWrite,await i.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,Object.assign({},n,{rawFilename:s,rawComment:r,version:i,lastModDate:a,rawExtraField:o,zip64:c}))}async close(e=new Uint8Array(0)){const t=this.writer,n=this.files;let s=0,r=0,i=this.offset,a=n.size;if(e.length){if(!(e.length<=v))throw new Error(Ie);d.setUint16(s+20,e.length,!0)}for(const[,e]of n)r+=46+e.rawFilename.length+e.rawComment.length+e.extraFieldZip64.length+e.extraFieldAES.length+e.rawExtraField.length;(i+r>=g||a>=v)&&(this.zip64=!0);const o=new Uint8Array(r+(this.zip64?98:22)),d=new DataView(o.buffer);for(const[,e]of n){const t=e.rawFilename,n=e.extraFieldZip64,r=e.extraFieldAES,i=n.length+r.length+e.rawExtraField.length;d.setUint32(s,b),d.setUint16(s+4,e.version,!0),o.set(e.headerArray,s+6),d.setUint16(s+30,i,!0),d.setUint16(s+32,e.rawComment.length,!0),e.directory&&d.setUint8(s+38,16),e.zip64?d.setUint32(s+42,g,!0):d.setUint32(s+42,e.offset,!0),o.set(t,s+46),o.set(n,s+46+t.length),o.set(r,s+46+t.length+n.length),o.set(e.rawExtraField,46+t.length+n.length+r.length),o.set(e.rawComment,s+46+t.length+i),s+=46+t.length+i+e.rawComment.length}return this.zip64&&(d.setUint32(s,U),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(r),!0),d.setBigUint64(s+48,BigInt(i),!0),d.setUint32(s+56,z),d.setBigUint64(s+64,BigInt(i+r),!0),d.setUint32(s+72,1,!0),a=v,i=g,s+=76),d.setUint32(s,k),d.setUint16(s+8,a,!0),d.setUint16(s+10,a,!0),d.setUint32(s+12,r,!0),d.setUint32(s+16,i,!0),await t.writeUint8Array(o),await t.writeUint8Array(e),t.getData()}}{constructor(e,t){super(e,t,Pe)}}const He=524288;class Ke{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.data=n.data,this.id=e.entries.length,this.parent=s,this.children=[],this.uncompressedSize=0,e.entries.push(this),s&&this.parent.children.push(this)}moveTo(e){if(!e.directory)throw new Error("Target entry is not a directory");if(e.isDescendantOf(this))throw new Error("Entry is a ancestor of target entry");if(this!=e){if(e.getChildByName(this.name))throw new Error("Entry filename already exists");et(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 Ye extends Ke{constructor(e,t,n,s){super(e,t,n,s),this.Reader=n.Reader,this.Writer=n.Writer,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(r=0){const i=r*He;if(n.onprogress&&n.onprogress(i,e.size),i<e.size){const n=await e.readUint8Array(i,Math.min(He,e.size-i));return await t.writeUint8Array(n),s(r+1)}return t.getData()}}(this.reader,e,t))}getText(e,t){return this.getData(new d(e),t)}getBlob(e,t){return this.getData(new m(e),t)}getData64URI(e,t){return this.getData(new p(e),t)}}class Xe extends Ke{constructor(e,t,n,s){super(e,t,n,s),this.directory=!0}addDirectory(e){return nt(this,e,null,!0)}addText(e,t){return nt(this,e,{data:t,Reader:o,Writer:d})}addBlob(e,t){return nt(this,e,{data:t,Reader:l,Writer:m})}addData64URI(e,t){return nt(this,e,{data:t,Reader:c,Writer:p})}addHttpContent(e,t,n={}){return nt(this,e,{data:t,Reader:n.useRangeHeader?h:f})}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 r(e){e.readEntries((n=>{n.length?(s=s.concat(n),r(e)):t(s)}),n)}e.isDirectory&&r(e.createReader()),e.isFile&&t(s)}))}async function s(e,t){const r=await n(t);for(const t of r)t.isDirectory&&await s(e.addDirectory(t.name)),await new Promise(((n,s)=>{t.isFile&&t.file((s=>{const r=e.addBlob(t.name,s);r.uncompressedSize=s.size,n(r)}),s)}))}}(this,e)}async addData(e,t){return nt(this,e,t)}async importBlob(e,t={}){await this.importZip(new l(e),t)}async importData64URI(e,t={}){await this.importZip(new c(e),t)}async importHttpContent(e,t={}){await this.importZip(t.useRangeHeader?new h(e):new f(e),t)}async exportBlob(e={}){return this.exportZip(new m("application/zip"),e)}async exportData64URI(e={}){return this.exportZip(new p("application/zip"),e)}async importZip(e,t){await e.init();const n=new Ve(e,t),s=await n.getEntries();let r=0;const i=Je(s,"compressedSize");s.forEach((e=>{let n=this,s=e.filename.split("/"),a=s.pop();if(s.forEach((e=>n=n.getChildByName(e)||new Xe(this.fs,e,null,n))),!e.directory){let s=r;nt(n,a,{data:e,Reader:Qe(Object.assign({},{onprogress:e=>{t.onprogress&&t.onprogress(s+e,i)}}))}),r+=e.compressedSize}}))}async exportZip(e,t){await $e(this);const n=new Ze(e,t);return await async function(e,t,n,s){let r=0;async function i(e,t){async function a(){let a=0;for(const o of t.children){let t=r;await e.add(o.getFullname(),o.reader,Object.assign({directory:o.directory},{onprogress:e=>{s.onprogress&&s.onprogress(t+a+e,n)}})),r+=o.uncompressedSize,await i(e,o),a++}}await a()}await i(e,t)}(n,this,Je([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 Ge={FS:class{constructor(){tt(this)}remove(e){et(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){tt(this),await this.root.importBlob(e)}async importData64URI(e){tt(this),await this.root.importData64URI(e)}async importHttpContent(e,t){this.entries=[],this.root=new Xe(this),await this.root.importHttpContent(e,t)}async exportBlob(e){return this.root.exportBlob(e)}async exportData64URI(e){return this.root.exportData64URI(e)}},ZipDirectoryEntry:Xe,ZipFileEntry:Ye};function Je(e,t){let n=0;return e.forEach((function e(s){n+=s[t],s.children&&s.children.forEach(e)})),n}function Qe(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 m,e);this.data=t,this.blobReader=new l(t)}return this.blobReader.readUint8Array(t,n)}async init(){this.size=this.entry.uncompressedSize}}}async function $e(e){if(e.children.length)for(const t of e.children)t.directory?await $e(t):(t.reader=new t.Reader(t.data),await t.reader.init(),t.uncompressedSize=t.reader.size)}function et(e){const t=e.parent.children;t.forEach(((n,s)=>{n.id==e.id&&t.splice(s,1)}))}function tt(e){e.entries=[],e.root=new Xe(e)}function nt(e,t,n,s){if(e.directory)return s?new Xe(e.fs,t,n,e):new Ye(e.fs,t,n,e);throw new Error("Parent entry is not a directory")}const st={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"]}},rt=(()=>{const e={};for(let t in st)if(st.hasOwnProperty(t))for(let n in st[t])if(st[t].hasOwnProperty(n)){const s=st[t][n];if("string"==typeof s)e[s]=t+"/"+n;else for(let r=0;r<s.length;r++)e[s[r]]=t+"/"+n}return e})();e.BlobReader=l,e.BlobWriter=m,e.Data64URIReader=c,e.Data64URIWriter=p,e.ERR_BAD_FORMAT=fe,e.ERR_CENTRAL_DIRECTORY_NOT_FOUND=ge,e.ERR_DUPLICATED_NAME=Se,e.ERR_ENCRYPTED=ye,e.ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND=xe,e.ERR_EOCDR_NOT_FOUND=he,e.ERR_EOCDR_ZIP64_NOT_FOUND=ue,e.ERR_EXTRAFIELD_ZIP64_NOT_FOUND=we,e.ERR_HTTP_RANGE=n,e.ERR_INVALID_COMMENT=Ie,e.ERR_INVALID_DATE=_e,e.ERR_INVALID_ENTRY_COMMENT=Te,e.ERR_INVALID_ENTRY_NAME=Be,e.ERR_INVALID_EXTRAFIELD_DATA=qe,e.ERR_INVALID_EXTRAFIELD_TYPE=Ce,e.ERR_INVALID_PASSORD=D,e.ERR_INVALID_SIGNATURE=Q,e.ERR_INVALID_VERSION=Le,e.ERR_LOCAL_FILE_HEADER_NOT_FOUND=ve,e.ERR_UNSUPPORTED_COMPRESSION=ke,e.ERR_UNSUPPORTED_ENCRYPTION=be,e.HttpRangeReader=h,e.HttpReader=f,e.Reader=i,e.TextReader=o,e.TextWriter=d,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=u,e.Writer=a,e.ZipReader=Ve,e.ZipWriter=Ze,e.configure=function(e){if(Pe=Object.assign({},Pe,e),null!=Pe.workerScripts&&null!=Pe.workerScriptsPath)throw new Error("Either workerScripts or workerScriptsPath may be set, not both");if(Pe.workerScripts){if(Pe.workerScripts.deflate&&!Array.isArray(Pe.workerScripts.deflate))throw new Error("workerScripts.deflate must be an array");if(Pe.workerScripts.inflate&&!Array.isArray(Pe.workerScripts.inflate))throw new Error("workerScripts.inflate must be an array")}},e.fs=Ge,e.getMimeType=function(e){return e&&rt[e.split(".").pop().toLowerCase()]||"application/octet-stream"},e.initShimAsyncCodec=(e,t={})=>({ZipDeflate:Me(e.Deflate,t.deflate),ZipInflate:Me(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="HTTP Range not supported",r="text/plain";class i{constructor(){this.size=0}init(){this.initialized=!0}}class s extends i{}class a extends i{writeUint8Array(t){this.size+=t.length}}class o extends s{constructor(t){super(),this.blobReader=new l(new Blob([t],{type:r}))}init(){super.init(),this.blobReader.init(),this.size=this.blobReader.size}readUint8Array(t,e){return this.blobReader.readUint8Array(t,e)}}class c extends a{constructor(t){super(),this.encoding=t,this.blob=new Blob([],{type:r})}writeUint8Array(t){super.writeUint8Array(t),this.blob=new Blob([this.blob,t.buffer],{type:r})}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 h extends s{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),r=4*Math.floor(t/3),i=atob(this.dataURI.substring(r+this.dataStart,4*Math.ceil((t+e)/3)+this.dataStart)),s=t-3*Math.floor(r/4);for(let t=s;t<s+e;t++)n[t-s]=i.charCodeAt(t);return n}}class d extends a{constructor(t){super(),this.data="data:"+(t||"")+";base64,",this.pending=[]}writeUint8Array(t){super.writeUint8Array(t);let e=0,n=this.pending;const r=this.pending.length;for(this.pending="",e=0;e<3*Math.floor((r+t.length)/3)-r;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 l extends s{constructor(t){super(),this.blob=t,this.size=t.size}readUint8Array(t,e){const n=new FileReader;return new Promise(((r,i)=>{n.onload=t=>r(new Uint8Array(t.target.result)),n.onerror=i,n.readAsArrayBuffer(this.blob.slice(t,t+e))}))}}class u extends a{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 p extends s{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 r=new XMLHttpRequest;r.addEventListener("load",(()=>{r.status<400?(this.size=Number(r.getResponseHeader("Content-Length")),this.size?t():f().then((()=>t())).catch(n)):n(e+(r.statusText||r.status)+".")}),!1),r.addEventListener("error",n,!1),r.open("HEAD",this.url),r.send()}));await f()}async readUint8Array(t,e){return this.data||await f(this,this.url),new Uint8Array(this.data.subarray(t,t+e))}}class w extends s{constructor(t){super(),this.url=t}init(){return super.init(),new Promise(((t,r)=>{const i=new XMLHttpRequest;i.addEventListener("load",(()=>{i.status<400?(this.size=Number(i.getResponseHeader("Content-Length")),"bytes"==i.getResponseHeader("Accept-Ranges")?t():r(new Error(n))):r(e+(i.statusText||i.status)+".")}),!1),i.addEventListener("error",r,!1),i.open("HEAD",this.url),i.send()}))}readUint8Array(t,n){return new Promise(((r,i)=>{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?r(new Uint8Array(s.response)):i(e+(s.statusText||s.status)+".")}),!1),s.addEventListener("error",i,!1),s.send()}))}}class g extends a{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(((r,i)=>{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),r()):i(e+(s.statusText||s.status)+".")}),!1),s.addEventListener("error",i,!1),s.open("GET",n),s.responseType="arraybuffer",s.send()}))}const y=4294967295,m=65535,U=1347093252,b=1347094280,E=1347092738,A=1347093766,R=1347094022,D=1347094023,x=39169,F=2048;class z{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 r=0,i=0|t.length;r<i;r++)n=n>>>8^e[255&(n^t[r])];this.crc=n}get(){return~this.crc}}const S="Invalid pasword",I=16,v="raw",T={name:"PBKDF2"},B={name:"HMAC"},L="SHA-1",_={name:"AES-CTR"},k=Object.assign({hash:B},T),C=Object.assign({iterations:1e3,hash:{name:L}},T),N=Object.assign({hash:L},B),M=Object.assign({length:I},_),O=["deriveBits"],W=["sign"],P=528,V=10,Z=[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],H=crypto.subtle;class j{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+I<=r.length-V){const t=r.subarray(i,i+I),s=await H.decrypt(Object.assign({counter:this.counter},M),this.keys.decrypt,t);return q(this.counter),n.set(new Uint8Array(s),i),e(i+I)}return this.pendingInput=r.subarray(i),this.signed&&(this.input=Y(this.input,t)),n};if(this.password){const e=t.subarray(0,18);await async function(t,e,n){t.counter=new Uint8Array(Z);const r=e.subarray(0,16),i=e.subarray(16),s=(new TextEncoder).encode(n),a=await H.importKey(v,s,k,!1,O),o=await H.deriveBits(Object.assign({salt:r},C),a,528),c=new Uint8Array(o),h=c.subarray(64);if(t.keys={decrypt:await H.importKey(v,c.subarray(0,32),_,!0,["decrypt"]),authentication:await H.importKey(v,c.subarray(32,64),N,!1,W),passwordVerification:h},h[0]!=i[0]||h[1]!=i[1])throw new Error(S)}(this,e,this.password),this.password=null,t=t.subarray(18)}let n=new Uint8Array(t.length-V-(t.length-V)%I),r=t;return this.pendingInput.length&&(r=Y(this.pendingInput,t),n=X(n,r.length-V-(r.length-V)%I)),e()}async flush(){const t=this.pendingInput,e=this.keys,n=t.subarray(0,t.length-V),r=t.subarray(t.length-V);let i=new Uint8Array(0);if(n.length){const t=await H.decrypt(Object.assign({counter:this.counter},M),e.decrypt,n);i=new Uint8Array(t)}let s=!0;if(this.signed){const t=await H.sign(B,e.authentication,this.input.subarray(0,this.input.length-V)),n=new Uint8Array(t);this.input=null;for(let t=0;t<V;t++)n[t]!=r[t]&&(s=!1)}return{valid:s,data:i}}}class K{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+I<=t.length){const s=t.subarray(i,i+I),a=await H.encrypt(Object.assign({counter:this.counter},M),this.keys.encrypt,s);return q(this.counter),r.set(new Uint8Array(a),i+n.length),e(i+I)}return this.pendingInput=t.subarray(i),this.output=Y(this.output,r),r};let n=new Uint8Array(0);this.password&&(n=await async function(t,e){t.counter=new Uint8Array(Z);const n=crypto.getRandomValues(new Uint8Array(16)),r=(new TextEncoder).encode(e),i=await H.importKey(v,r,k,!1,O),s=await H.deriveBits(Object.assign({salt:n},C),i,P),a=new Uint8Array(s);return t.keys={encrypt:await H.importKey(v,a.subarray(0,32),_,!0,["encrypt"]),authentication:await H.importKey(v,a.subarray(32,64),N,!1,W),passwordVerification:a.subarray(64)},Y(n,t.keys.passwordVerification)}(this,this.password),this.password=null);let r=new Uint8Array(n.length+t.length-t.length%I);return r.set(n,0),this.pendingInput.length&&(t=Y(this.pendingInput,t),r=X(r,t.length-t.length%I)),e()}async flush(){let t=new Uint8Array(0);if(this.pendingInput.length){const e=await H.encrypt(Object.assign({counter:this.counter},M),this.keys.encrypt,this.pendingInput);t=new Uint8Array(e),this.output=Y(this.output,t)}const e=await H.sign(B,this.keys.authentication,this.output.subarray(18));this.output=null;const n=new Uint8Array(e).subarray(0,V);return{data:Y(t,n),signature:n}}}function q(t){for(let e=0;e<16;e++){if(255!=t[e]){t[e]++;break}t[e]=0}}function Y(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 X(t,e){if(e&&e>t.length){const n=t;(t=new Uint8Array(e)).set(n,0)}return t}const G="deflate",J="inflate",Q="Invalid signature";class ${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 z,this.decrypt=this.encrypted&&new j(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(Q);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(Q)}return this.compressed&&(e=await this.inflate.append(e)||new Uint8Array(0),await this.inflate.flush()),{data:e,signature:t}}}class tt{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 z,this.encrypt=this.encrypted&&new K(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 r=new Uint8Array(e.length+n.data.length);r.set(e,0),r.set(n.data,e.length),e=r}else this.signed&&(t=this.crc32.get());return{data:e,signature:t}}}const et="init",nt="append",rt="flush",it="message",st="z-worker.js",at={deflate:[st,"deflate.js"],inflate:[st,"inflate.js"]},ot={pool:[],pendingRequests:[]};function ct(t,e){const n=ot.pool,r=!(e.inputCompressed||e.inputSigned||e.inputEncrypted||e.outputCompressed||e.outputSigned||e.outputEncrypted);let i;if(e.useWebWorkers||void 0===e.useWebWorkers&&t.useWebWorkers&&!r){const n=e.codecType;t.workerScripts?(s=t.workerScripts[n],i="undefined"!=typeof document?s.map((t=>new URL(t,document.baseURI).href)):s):(i=at[n].slice(0),i[0]=(t.workerScriptsPath||"")+i[0])}var s;if(n.length<t.maxWorkers){const t={};return n.push(t),ht(t,e,i)}{const t=n.find((t=>!t.busy));return t?ht(t,e,i):new Promise((t=>ot.pendingRequests.push({resolve:t,options:e,scripts:i})))}}function ht(t,e,n){return t.busy=!0,t.options=e,t.scripts=n,n?function(t){let e;t.interface||(t.worker=new Worker(t.scripts[0]),t.worker.addEventListener(it,i,!1),t.interface={append:t=>n({type:nt,data:t}),flush:()=>n({type:rt})});return t.interface;async function n(n){if(!e){const e=t.scripts.slice(1);await r(Object.assign({type:et,options:t.options,scripts:e}))}return r(n)}function r(n){const r=t.worker,i=new Promise(((t,n)=>e={resolve:t,reject:n}));try{if(n.data)try{r.postMessage(n,[n.data.buffer])}catch(t){r.postMessage(n)}else r.postMessage(n)}catch(n){e.reject(n),e=null,dt(t)}return i}function i(n){const r=n.data;if(e){const n=r.error;if(n){const r=new Error(n.message);r.stack=n.stack,e.reject(r),e=null,dt(t)}else r.type!=et&&r.type!=rt&&r.type!=nt||(r.type==rt?(e.resolve({data:new Uint8Array(r.data),signature:r.signature}),e=null,dt(t)):e.resolve(r.data&&new Uint8Array(r.data)))}}}(t):function(t){const e=function(t){return t.codecType.startsWith(G)?new tt(t):t.codecType.startsWith(J)?new $(t):void 0}(t.options);return{async append(n){try{return await e.append(n)}catch(e){throw dt(t),e}},async flush(){try{return await e.flush()}finally{dt(t)}}}}(t)}function dt(t){if(t.busy=!1,ot.pendingRequests.length){const[{resolve:e,options:n,scripts:r}]=ot.pendingRequests.splice(0,1);e(ht(t,n,r))}else t.worker&&t.worker.terminate(),ot.pool=ot.pool.filter((e=>e!=t))}async function lt(t,e,n,r,i,s,a){const o=Math.max(s.chunkSize,64);return async function s(c=0,h=0){const d=c*o;if(d<i){const l=await e.readUint8Array(d+r,Math.min(o,i-d)),u=await t.append(l);return h+=await ut(n,u),a.onprogress&&a.onprogress(d+l.length,i),s(c+1,h)}{const e=await t.flush();return h+=await ut(n,e.data),{signature:e.signature,length:h}}}()}async function ut(t,e){return e.length&&await t.writeUint8Array(e),e.length}const pt="File format is not recognized",wt="End of central directory not found",gt="End of Zip64 central directory not found",ft="End of Zip64 central directory locator not found",yt="Central directory header not found",mt="Local file header not found",Ut="Zip64 extra field not found",bt="File contains encrypted entry",Et="Encryption not supported",At="Compression method not supported",Rt="utf-8",Dt=["uncompressedSize","compressedSize","offset"],xt=["\0","☺","☻","♥","♦","♣","♠","•","◘","○","◙","♂","♀","♪","♫","☼","►","◄","↕","‼","¶","§","▬","↨","↑","↓","→","←","∟","↔","▲","▼"," ","!",'"',"#","$","%","&","'","(",")","*","+",",","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","<","=",">","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","\\","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~","⌂","Ç","ü","é","â","ä","à","å","ç","ê","ë","è","ï","î","ì","Ä","Å","É","æ","Æ","ô","ö","ò","û","ù","ÿ","Ö","Ü","¢","£","¥","₧","ƒ","á","í","ó","ú","ñ","Ñ","ª","º","¿","⌐","¬","½","¼","¡","«","»","░","▒","▓","│","┤","╡","╢","╖","╕","╣","║","╗","╝","╜","╛","┐","└","┴","┬","├","─","┼","╞","╟","╚","╔","╩","╦","╠","═","╬","╧","╨","╤","╥","╙","╘","╒","╓","╫","╪","┘","┌","█","▄","▌","▐","▀","α","ß","Γ","π","Σ","σ","µ","τ","Φ","Θ","Ω","δ","∞","φ","ε","∩","≡","±","≥","≤","⌠","⌡","÷","≈","°","∙","·","√","ⁿ","²","■"," "];class Ft{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 r=await n.readUint8Array(this.offset,30),i=new DataView(r.buffer),s=void 0===e.password?this.options.password:e.password;let a=s&&s.length&&s;if(this.extraFieldAES){if(99!=this.extraFieldAES.originalCompressionMethod)throw new Error(At);if(3!=this.extraFieldAES.strength)throw new Error(Et)}if(0!=this.compressionMethod&&8!=this.compressionMethod)throw new Error(At);if(i.getUint32(0,!1)!=U)throw new Error(mt);const o=this.localDirectory={};zt(o,i,4),o.rawExtraField=r.subarray(this.offset+30+o.filenameLength,this.offset+30+o.filenameLength+o.extraFieldLength),St(this,o,i,4);let c=this.offset+30+o.filenameLength+o.extraFieldLength;const h=this.bitFlag.encrypted&&o.bitFlag.encrypted;if(h&&!a)throw new Error(bt);const d=await ct(this.config,{codecType:J,inputPassword:a,inputSigned:void 0===e.checkSignature?this.options.checkSignature:e.checkSignature,inputSignature:this.signature,inputCompressed:0!=this.compressionMethod,inputEncrypted:h,useWebWorkers:void 0===e.useWebWorkers?this.options.useWebWorkers:e.useWebWorkers});return t.initialized||await t.init(),await lt(d,n,t,c,this.compressedSize,this.config,{onprogress:e.onprogress}),t.getData()}}function zt(t,e,n){t.version=e.getUint16(n,!0);const r=t.rawBitFlag=e.getUint16(n+2,!0);t.bitFlag={encrypted:1==(1&r),level:(6&r)>>1,dataDescriptor:8==(8&r),languageEncodingFlag:(r&F)==F},t.encrypted=t.bitFlag.encrypted,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 St(t,e,n,r){const i=e.rawExtraField,s=e.extraField=new Map,a=new DataView(new Uint8Array(i).buffer);let o=0;try{for(;o<i.length;){const t=a.getUint16(o,!0),e=a.getUint16(o+2,!0);s.set(t,{type:t,data:i.slice(o+4,o+4+e)}),o+=4+e}}catch(t){}const c=n.getUint16(r+4,!0);e.signature=n.getUint32(r+10,!0),e.uncompressedSize=n.getUint32(r+18,!0),e.compressedSize=n.getUint32(r+14,!0);const h=e.extraFieldZip64=s.get(1);h&&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 r=Dt.filter((t=>e[t]==y));for(let e=0;e<r.length;e++)t[r[e]]=t.values[e];Dt.forEach((n=>{if(e[n]==y){if(!t||void 0===t[n])throw new Error(Ut);e[n]=t[n]}}))}(h,e);const d=e.extraFieldUnicodePath=s.get(28789);d&&It(d,"filename","rawFilename",e,t);let l=e.extraFieldUnicodeComment=s.get(25461);l&&It(l,"comment","rawComment",e,t);const u=e.extraFieldAES=s.get(39169);u?function(t,e,n){if(t){const r=new DataView(t.data.buffer);t.vendorVersion=r.getUint8(0),t.vendorId=r.getUint8(2);const i=r.getUint8(4);t.strength=i,t.originalCompressionMethod=n,e.compressionMethod=t.compressionMethod=r.getUint16(5,!0)}else e.compressionMethod=n}(u,e,c):e.compressionMethod=c,8==e.compressionMethod&&(e.bitFlag.enhancedDeflating=16!=(16&e.rawBitFlag))}function It(t,e,n,r,i){const s=new DataView(t.data.buffer);t.version=s.getUint8(0),t.signature=s.getUint32(1,!0);const a=new z;a.append(i[n]);const o=new DataView(new Uint8Array(4).buffer);o.setUint32(0,a.get()),t[e]=(new TextDecoder).decode(t.data.subarray(5)),i.bitFlag.languageEncodingFlag||t.signature!=o.getUint32(0,!1)||(r[e]=t[e])}function vt(t,e){if(e&&"cp437"!=e.trim().toLowerCase())return new TextDecoder(e).decode(t);{let e="";for(let n=0;n<t.length;n++)e+=xt[t[n]];return e}}const Tt="File already exists",Bt="Zip file comment exceeds 64KB",Lt="File entry comment exceeds 64KB",_t="File entry name exceeds 64KB",kt="Version exceeds 65535",Ct="The minimum year for the date is 1980",Nt="Extra field type exceeds 65535",Mt="Extra field data exceeds 64KB",Ot=new Uint8Array([7,0,2,0,65,69,3,0,0]);const Wt="function";function Pt(t,e){return class{constructor(n){const r=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==Wt)this.codec.onData=r;else{if(typeof this.codec.on!=Wt)throw new Error("Cannot register the callback function");this.codec.on("data",r)}}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 Vt={chunkSize:524288,maxWorkers:"undefined"!=typeof navigator&&navigator.hardwareConcurrency||2,workerScriptsPath:void 0,useWebWorkers:!0};let Zt=Object.assign({},Vt);class Ht 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,r){const i=new Uint8Array(4);if(new DataView(i.buffer).setUint32(0,e),t.size<n)throw new Error(pt);const s=n+r;let a=n,o=await c(a);o||(o=await c(Math.min(s,t.size)));return o;async function c(e){const r=t.size-e,s=await t.readUint8Array(r,e);for(let t=s.length-n;t>=0;t--)if(s[t]==i[0]&&s[t+1]==i[1]&&s[t+2]==i[2]&&s[t+3]==i[3])return{offset:r,buffer:s.slice(t,t+n).buffer}}}(t,A,22,m);if(!e)throw new Error(wt);const n=new DataView(e.buffer);let r,i=n.getUint32(16,!0),s=n.getUint16(8,!0);if(i==y||s==m){r=!0;const n=await t.readUint8Array(e.offset-20,20),a=new DataView(n.buffer);if(Number(a.getUint32(0,!1))!=D)throw new Error(gt);i=Number(a.getBigUint64(8,!0));const o=await t.readUint8Array(i,56),c=new DataView(o.buffer);if(Number(c.getUint32(0,!1))!=R)throw new Error(ft);s=Number(c.getBigUint64(24,!0)),i-=Number(c.getBigUint64(40,!0))}if(i<0||!r&&(i>=t.size||s>=m))throw new Error(pt);const a=await t.readUint8Array(i,t.size-i),o=new DataView(a.buffer),c=[];let h=0;for(let t=0;t<s;t++){const t=new Ft(this.reader,this.config,this.options);if(o.getUint32(h,!1)!=E)throw new Error(yt);t.compressedSize=0,t.uncompressedSize=0,zt(t,o,h+6),t.commentLength=o.getUint16(h+32,!0),t.directory=16==(16&o.getUint8(h+38)),t.offset=o.getUint32(h+42,!0),t.rawFilename=a.subarray(h+46,h+46+t.filenameLength),t.filename=vt(t.rawFilename,t.bitFlag.languageEncodingFlag?Rt:this.options.filenameEncoding),!t.directory&&t.filename&&"/"==t.filename.charAt(t.filename.length-1)&&(t.directory=!0),t.rawExtraField=a.subarray(h+46+t.filenameLength,h+46+t.filenameLength+t.extraFieldLength),St(t,t,o,h+6),t.rawComment=a.subarray(h+46+t.filenameLength+t.extraFieldLength,h+46+t.filenameLength+t.extraFieldLength+t.commentLength),t.comment=vt(t.rawComment,t.bitFlag.languageEncodingFlag?Rt:this.options.commentEncoding),c.push(t),h+=46+t.filenameLength+t.extraFieldLength+t.commentLength}return c}async close(){}}{constructor(t,e){super(t,e,Zt)}}class jt 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.length&&"/"==t.charAt(t.length-1)||(t+="/"),this.files.has(t))throw new Error(Tt);if(n.rawFilename=(new TextEncoder).encode(t),n.rawFilename.length>m)throw new Error(_t);if(n.comment=n.comment||"",n.rawComment=(new TextEncoder).encode(n.comment),n.rawComment.length>m)throw new Error(Lt);if(n.version=this.options.version||n.version||0,n.version>m)throw new Error(kt);if(n.lastModDate=n.lastModDate||new Date,n.lastModDate.getFullYear()<1980)throw new Error(Ct);const r=n.extraField;if(r){let t=4,e=0;r.forEach((e=>t+=e.length));const i=n.rawExtraField=new Uint8Array(t);r.forEach(((t,n)=>{if(n>m)throw new Error(Nt);if(t.length>m)throw new Error(Mt);i.set(new Uint16Array([n]),e),i.set(new Uint16Array([t.length]),e+2),i.set(t,e+4),e+=4+t.length}))}n.zip64=n.zip64||this.zip64,await async function(t,e,n,r){const i=t.files,s=t.writer;let a;i.set(e,null);try{let o,c;try{r.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>=y||n&&(n.size>=y||t.offset+n.size>=y))&&(r.zip64=!0),c=await async function(t,e,n,r,i,s){const a=s.rawFilename,o=s.lastModDate,c=new Uint8Array(26),h=new DataView(c.buffer),d=void 0===s.password?i.password:s.password,l=d&&d.length&&d,u=void 0===s.level?i.level:s.level,p=0!==u&&!s.directory,w=void 0===d||!d.length,g=s.zip64;let f;if(l){f=new Uint8Array(Ot.length+2);new DataView(f.buffer).setUint16(0,x,!0),f.set(Ot,2)}else f=new Uint8Array(0);const m={version:s.version||20,zip64:g,headerArray:c,directory:s.directory,filename:t,rawFilename:a,comment:s.comment,rawComment:s.rawComment,extraFieldZip64:g?new Uint8Array(28):new Uint8Array(0),extraFieldAES:f,rawExtraField:s.rawExtraField||new Uint8Array(0)};let E=2056,A=0;p&&(A=8);g&&(m.version=m.version>45?m.version:45);l&&(m.encrypted=!0,m.version=m.version>51?m.version:51,E|=1,A=99,p&&(m.extraFieldAES[9]=8));h.setUint16(0,m.version,!0),h.setUint16(2,E,!0),h.setUint16(4,A,!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 R=new Uint8Array(30+a.length);let D;if(new DataView(R.buffer).setUint32(0,U),R.set(c,4),R.set(a,30),e){e.initialized||await e.init();const t=await ct(r,{codecType:G,level:u,outputPassword:d,outputSigned:w,outputCompressed:p,outputEncrypted:Boolean(d),useWebWorkers:void 0===s.useWebWorkers?i.useWebWorkers:s.useWebWorkers});await n.writeUint8Array(R),D=await lt(t,e,n,0,e.size,r,{onprogress:s.onprogress}),m.compressedSize=D.length}else await n.writeUint8Array(R);const F=new Uint8Array(g?24:16),z=new DataView(F.buffer);if(z.setUint32(0,b),e)if(l||void 0===D.signature||(h.setUint32(10,D.signature,!0),z.setUint32(4,D.signature,!0)),g){h.setUint32(14,y,!0),z.setBigUint64(8,BigInt(m.compressedSize),!0),h.setUint32(18,y,!0),z.setBigUint64(16,BigInt(e.size),!0);const t=new DataView(m.extraFieldZip64.buffer);t.setUint16(0,1,!0),t.setUint16(2,24,!0),t.setBigUint64(4,BigInt(e.size),!0),t.setBigUint64(12,BigInt(m.compressedSize),!0)}else h.setUint32(14,m.compressedSize,!0),z.setUint32(8,m.compressedSize,!0),h.setUint32(18,e.size,!0),z.setUint32(12,e.size,!0);return await n.writeUint8Array(F),m.length=R.length+(D?D.length:0)+F.length,m}(e,n,o,t.config,t.options,r)}catch(t){throw i.delete(e),t}if(i.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=new Uint8Array(0)){const e=this.writer,n=this.files;let r=0,i=0,s=this.offset,a=n.size;if(t.length){if(!(t.length<=m))throw new Error(Bt);c.setUint16(r+20,t.length,!0)}for(const[,t]of n)i+=46+t.rawFilename.length+t.rawComment.length+t.extraFieldZip64.length+t.extraFieldAES.length+t.rawExtraField.length;(s+i>=y||a>=m)&&(this.zip64=!0);const o=new Uint8Array(i+(this.zip64?98:22)),c=new DataView(o.buffer);for(const[,t]of n){const e=t.rawFilename,n=t.extraFieldZip64,i=t.extraFieldAES,s=n.length+i.length+t.rawExtraField.length;c.setUint32(r,E),c.setUint16(r+4,t.version,!0),o.set(t.headerArray,r+6),c.setUint16(r+30,s,!0),c.setUint16(r+32,t.rawComment.length,!0),t.directory&&c.setUint8(r+38,16),t.zip64?c.setUint32(r+42,y,!0):c.setUint32(r+42,t.offset,!0),o.set(e,r+46),o.set(n,r+46+e.length),o.set(i,r+46+e.length+n.length),o.set(t.rawExtraField,46+e.length+n.length+i.length),o.set(t.rawComment,r+46+e.length+s),r+=46+e.length+s+t.rawComment.length}return this.zip64&&(c.setUint32(r,R),c.setBigUint64(r+4,BigInt(44),!0),c.setUint16(r+12,45,!0),c.setUint16(r+14,45,!0),c.setBigUint64(r+24,BigInt(a),!0),c.setBigUint64(r+32,BigInt(a),!0),c.setBigUint64(r+40,BigInt(i),!0),c.setBigUint64(r+48,BigInt(s),!0),c.setUint32(r+56,D),c.setBigUint64(r+64,BigInt(s+i),!0),c.setUint32(r+72,1,!0),a=m,s=y,r+=76),c.setUint32(r,A),c.setUint16(r+8,a,!0),c.setUint16(r+10,a,!0),c.setUint32(r+12,i,!0),c.setUint32(r+16,s,!0),await e.writeUint8Array(o),await e.writeUint8Array(t),e.getData()}}{constructor(t,e){super(t,e,Zt)}}const Kt=524288;class qt{constructor(t,e,n,r){if(t.root&&r&&r.getChildByName(e))throw new Error("Entry filename already exists");n||(n={}),this.fs=t,this.name=e,this.data=n.data,this.id=t.entries.length,this.parent=r,this.children=[],this.uncompressedSize=0,t.entries.push(this),r&&this.parent.children.push(this)}moveTo(t){if(!t.directory)throw new Error("Target entry is not a directory");if(t.isDescendantOf(this))throw new Error("Entry is a ancestor of target entry");if(this!=t){if(t.getChildByName(this.name))throw new Error("Entry filename already exists");te(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 Yt extends qt{constructor(t,e,n,r){super(t,e,n,r),this.Reader=n.Reader,this.Writer=n.Writer,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 r();async function r(i=0){const s=i*Kt;if(n.onprogress&&n.onprogress(s,t.size),s<t.size){const n=await t.readUint8Array(s,Math.min(Kt,t.size-s));return await e.writeUint8Array(n),r(i+1)}return e.getData()}}(this.reader,t,e))}getText(t,e){return this.getData(new c(t),e)}getBlob(t,e){return this.getData(new u(t),e)}getData64URI(t,e){return this.getData(new d(t),e)}}class Xt extends qt{constructor(t,e,n,r){super(t,e,n,r),this.directory=!0}addDirectory(t){return ne(this,t,null,!0)}addText(t,e){return ne(this,t,{data:e,Reader:o,Writer:c})}addBlob(t,e){return ne(this,t,{data:e,Reader:l,Writer:u})}addData64URI(t,e){return ne(this,t,{data:e,Reader:h,Writer:d})}addHttpContent(t,e,n={}){return ne(this,t,{data:e,Reader:n.useRangeHeader?w:p})}addFileEntry(t){!async function(t,e){e.isDirectory?await r(t,e):await new Promise(((n,r)=>{e.file((r=>{t.addBlob(e.name,r),n()}),r)}));function n(t){return new Promise(((e,n)=>{let r=[];function i(t){t.readEntries((n=>{n.length?(r=r.concat(n),i(t)):e(r)}),n)}t.isDirectory&&i(t.createReader()),t.isFile&&e(r)}))}async function r(t,e){const i=await n(e);for(const e of i)e.isDirectory&&await r(t.addDirectory(e.name)),await new Promise(((n,r)=>{e.isFile&&e.file((r=>{const i=t.addBlob(e.name,r);i.uncompressedSize=r.size,n(i)}),r)}))}}(this,t)}async addData(t,e){return ne(this,t,e)}async importBlob(t,e={}){await this.importZip(new l(t),e)}async importData64URI(t,e={}){await this.importZip(new h(t),e)}async importHttpContent(t,e={}){await this.importZip(e.useRangeHeader?new w(t):new p(t),e)}async exportBlob(t={}){return this.exportZip(new u("application/zip"),t)}async exportData64URI(t={}){return this.exportZip(new d("application/zip"),t)}async importZip(t,e){await t.init();const n=new Ht(t,e),r=await n.getEntries();let i=0;const s=Jt(r,"compressedSize");r.forEach((t=>{let n=this,r=t.filename.split("/"),a=r.pop();if(r.forEach((t=>n=n.getChildByName(t)||new Xt(this.fs,t,null,n))),!t.directory){let r=i;ne(n,a,{data:t,Reader:Qt(Object.assign({},{onprogress:t=>{e.onprogress&&e.onprogress(r+t,s)}}))}),i+=t.compressedSize}}))}async exportZip(t,e){await $t(this);const n=new jt(t,e);return await async function(t,e,n,r){let i=0;async function s(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},{onprogress:t=>{r.onprogress&&r.onprogress(e+a+t,n)}})),i+=o.uncompressedSize,await s(t,o),a++}}await a()}await s(t,e)}(n,this,Jt([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 Gt={FS:class{constructor(){ee(this)}remove(t){te(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){ee(this),await this.root.importBlob(t)}async importData64URI(t){ee(this),await this.root.importData64URI(t)}async importHttpContent(t,e){this.entries=[],this.root=new Xt(this),await this.root.importHttpContent(t,e)}async exportBlob(t){return this.root.exportBlob(t)}async exportData64URI(t){return this.root.exportData64URI(t)}},ZipDirectoryEntry:Xt,ZipFileEntry:Yt};function Jt(t,e){let n=0;return t.forEach((function t(r){n+=r[e],r.children&&r.children.forEach(t)})),n}function Qt(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 u,t);this.data=e,this.blobReader=new l(e)}return this.blobReader.readUint8Array(e,n)}async init(){this.size=this.entry.uncompressedSize}}}async function $t(t){if(t.children.length)for(const e of t.children)e.directory?await $t(e):(e.reader=new e.Reader(e.data),await e.reader.init(),e.uncompressedSize=e.reader.size)}function te(t){const e=t.parent.children;e.forEach(((n,r)=>{n.id==t.id&&e.splice(r,1)}))}function ee(t){t.entries=[],t.root=new Xt(t)}function ne(t,e,n,r){if(t.directory)return r?new Xt(t.fs,e,n,t):new Yt(t.fs,e,n,t);throw new Error("Parent entry is not a directory")}t.BlobReader=l,t.BlobWriter=u,t.Data64URIReader=h,t.Data64URIWriter=d,t.ERR_BAD_FORMAT=pt,t.ERR_CENTRAL_DIRECTORY_NOT_FOUND=yt,t.ERR_DUPLICATED_NAME=Tt,t.ERR_ENCRYPTED=bt,t.ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND=ft,t.ERR_EOCDR_NOT_FOUND=wt,t.ERR_EOCDR_ZIP64_NOT_FOUND=gt,t.ERR_EXTRAFIELD_ZIP64_NOT_FOUND=Ut,t.ERR_HTTP_RANGE=n,t.ERR_INVALID_COMMENT=Bt,t.ERR_INVALID_DATE=Ct,t.ERR_INVALID_ENTRY_COMMENT=Lt,t.ERR_INVALID_ENTRY_NAME=_t,t.ERR_INVALID_EXTRAFIELD_DATA=Mt,t.ERR_INVALID_EXTRAFIELD_TYPE=Nt,t.ERR_INVALID_PASSORD=S,t.ERR_INVALID_SIGNATURE=Q,t.ERR_INVALID_VERSION=kt,t.ERR_LOCAL_FILE_HEADER_NOT_FOUND=mt,t.ERR_UNSUPPORTED_COMPRESSION=At,t.ERR_UNSUPPORTED_ENCRYPTION=Et,t.HttpRangeReader=w,t.HttpReader=p,t.Reader=s,t.TextReader=o,t.TextWriter=c,t.Uint8ArrayReader=class extends s{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=a,t.ZipReader=Ht,t.ZipWriter=jt,t.configure=function(t){if(Zt=Object.assign({},Zt,t),null!=Zt.workerScripts&&null!=Zt.workerScriptsPath)throw new Error("Either workerScripts or workerScriptsPath may be set, not both");if(Zt.workerScripts){if(Zt.workerScripts.deflate&&!Array.isArray(Zt.workerScripts.deflate))throw new Error("workerScripts.deflate must be an array");if(Zt.workerScripts.inflate&&!Array.isArray(Zt.workerScripts.inflate))throw new Error("workerScripts.inflate must be an array")}},t.fs=Gt,t.getMimeType=function(){return"application/octet-stream"},t.initShimAsyncCodec=(t,e={})=>({ZipDeflate:Pt(t.Deflate,e.deflate),ZipInflate:Pt(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="HTTP Range not supported",r="text/plain";class i{constructor(){this.size=0}init(){this.initialized=!0}}class s extends i{}class a extends i{writeUint8Array(t){this.size+=t.length}}class o extends s{constructor(t){super(),this.blobReader=new l(new Blob([t],{type:r}))}init(){super.init(),this.blobReader.init(),this.size=this.blobReader.size}readUint8Array(t,e){return this.blobReader.readUint8Array(t,e)}}class c extends a{constructor(t){super(),this.encoding=t,this.blob=new Blob([],{type:r})}writeUint8Array(t){super.writeUint8Array(t),this.blob=new Blob([this.blob,t.buffer],{type:r})}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 h extends s{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),r=4*Math.floor(t/3),i=atob(this.dataURI.substring(r+this.dataStart,4*Math.ceil((t+e)/3)+this.dataStart)),s=t-3*Math.floor(r/4);for(let t=s;t<s+e;t++)n[t-s]=i.charCodeAt(t);return n}}class d extends a{constructor(t){super(),this.data="data:"+(t||"")+";base64,",this.pending=[]}writeUint8Array(t){super.writeUint8Array(t);let e=0,n=this.pending;const r=this.pending.length;for(this.pending="",e=0;e<3*Math.floor((r+t.length)/3)-r;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 l extends s{constructor(t){super(),this.blob=t,this.size=t.size}readUint8Array(t,e){const n=new FileReader;return new Promise(((r,i)=>{n.onload=t=>r(new Uint8Array(t.target.result)),n.onerror=i,n.readAsArrayBuffer(this.blob.slice(t,t+e))}))}}class u extends a{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 p extends s{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 r=new XMLHttpRequest;r.addEventListener("load",(()=>{r.status<400?(this.size=Number(r.getResponseHeader("Content-Length")),this.size?t():f().then((()=>t())).catch(n)):n(e+(r.statusText||r.status)+".")}),!1),r.addEventListener("error",n,!1),r.open("HEAD",this.url),r.send()}));await f()}async readUint8Array(t,e){return this.data||await f(this,this.url),new Uint8Array(this.data.subarray(t,t+e))}}class w extends s{constructor(t){super(),this.url=t}init(){return super.init(),new Promise(((t,r)=>{const i=new XMLHttpRequest;i.addEventListener("load",(()=>{i.status<400?(this.size=Number(i.getResponseHeader("Content-Length")),"bytes"==i.getResponseHeader("Accept-Ranges")?t():r(new Error(n))):r(e+(i.statusText||i.status)+".")}),!1),i.addEventListener("error",r,!1),i.open("HEAD",this.url),i.send()}))}readUint8Array(t,n){return new Promise(((r,i)=>{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?r(new Uint8Array(s.response)):i(e+(s.statusText||s.status)+".")}),!1),s.addEventListener("error",i,!1),s.send()}))}}class g extends a{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(((r,i)=>{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),r()):i(e+(s.statusText||s.status)+".")}),!1),s.addEventListener("error",i,!1),s.open("GET",n),s.responseType="arraybuffer",s.send()}))}const y=4294967295,m=65535,U=1347093252,b=1347094280,E=1347092738,A=1347093766,R=1347094022,D=1347094023,x=39169,F=2048;class z{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 r=0,i=0|t.length;r<i;r++)n=n>>>8^e[255&(n^t[r])];this.crc=n}get(){return~this.crc}}const S="Invalid pasword",I=16,v="raw",T={name:"PBKDF2"},B={name:"HMAC"},L="SHA-1",_={name:"AES-CTR"},k=Object.assign({hash:B},T),C=Object.assign({iterations:1e3,hash:{name:L}},T),N=Object.assign({hash:L},B),O=Object.assign({length:I},_),M=["deriveBits"],W=["sign"],P=528,V=10,Z=[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],H=crypto.subtle;class j{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+I<=r.length-V){const t=r.subarray(i,i+I),s=await H.decrypt(Object.assign({counter:this.counter},O),this.keys.decrypt,t);return q(this.counter),n.set(new Uint8Array(s),i),e(i+I)}return this.pendingInput=r.subarray(i),this.signed&&(this.input=Y(this.input,t)),n};if(this.password){const e=t.subarray(0,18);await async function(t,e,n){t.counter=new Uint8Array(Z);const r=e.subarray(0,16),i=e.subarray(16),s=(new TextEncoder).encode(n),a=await H.importKey(v,s,k,!1,M),o=await H.deriveBits(Object.assign({salt:r},C),a,528),c=new Uint8Array(o),h=c.subarray(64);if(t.keys={decrypt:await H.importKey(v,c.subarray(0,32),_,!0,["decrypt"]),authentication:await H.importKey(v,c.subarray(32,64),N,!1,W),passwordVerification:h},h[0]!=i[0]||h[1]!=i[1])throw new Error(S)}(this,e,this.password),this.password=null,t=t.subarray(18)}let n=new Uint8Array(t.length-V-(t.length-V)%I),r=t;return this.pendingInput.length&&(r=Y(this.pendingInput,t),n=X(n,r.length-V-(r.length-V)%I)),e()}async flush(){const t=this.pendingInput,e=this.keys,n=t.subarray(0,t.length-V),r=t.subarray(t.length-V);let i=new Uint8Array(0);if(n.length){const t=await H.decrypt(Object.assign({counter:this.counter},O),e.decrypt,n);i=new Uint8Array(t)}let s=!0;if(this.signed){const t=await H.sign(B,e.authentication,this.input.subarray(0,this.input.length-V)),n=new Uint8Array(t);this.input=null;for(let t=0;t<V;t++)n[t]!=r[t]&&(s=!1)}return{valid:s,data:i}}}class K{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+I<=t.length){const s=t.subarray(i,i+I),a=await H.encrypt(Object.assign({counter:this.counter},O),this.keys.encrypt,s);return q(this.counter),r.set(new Uint8Array(a),i+n.length),e(i+I)}return this.pendingInput=t.subarray(i),this.output=Y(this.output,r),r};let n=new Uint8Array(0);this.password&&(n=await async function(t,e){t.counter=new Uint8Array(Z);const n=crypto.getRandomValues(new Uint8Array(16)),r=(new TextEncoder).encode(e),i=await H.importKey(v,r,k,!1,M),s=await H.deriveBits(Object.assign({salt:n},C),i,P),a=new Uint8Array(s);return t.keys={encrypt:await H.importKey(v,a.subarray(0,32),_,!0,["encrypt"]),authentication:await H.importKey(v,a.subarray(32,64),N,!1,W),passwordVerification:a.subarray(64)},Y(n,t.keys.passwordVerification)}(this,this.password),this.password=null);let r=new Uint8Array(n.length+t.length-t.length%I);return r.set(n,0),this.pendingInput.length&&(t=Y(this.pendingInput,t),r=X(r,t.length-t.length%I)),e()}async flush(){let t=new Uint8Array(0);if(this.pendingInput.length){const e=await H.encrypt(Object.assign({counter:this.counter},O),this.keys.encrypt,this.pendingInput);t=new Uint8Array(e),this.output=Y(this.output,t)}const e=await H.sign(B,this.keys.authentication,this.output.subarray(18));this.output=null;const n=new Uint8Array(e).subarray(0,V);return{data:Y(t,n),signature:n}}}function q(t){for(let e=0;e<16;e++){if(255!=t[e]){t[e]++;break}t[e]=0}}function Y(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 X(t,e){if(e&&e>t.length){const n=t;(t=new Uint8Array(e)).set(n,0)}return t}const G="deflate",J="inflate",Q="Invalid signature";class ${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 z,this.decrypt=this.encrypted&&new j(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(Q);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(Q)}return this.compressed&&(e=await this.inflate.append(e)||new Uint8Array(0),await this.inflate.flush()),{data:e,signature:t}}}class tt{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 z,this.encrypt=this.encrypted&&new K(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 r=new Uint8Array(e.length+n.data.length);r.set(e,0),r.set(n.data,e.length),e=r}else this.signed&&(t=this.crc32.get());return{data:e,signature:t}}}const et="init",nt="append",rt="flush",it="message",st="z-worker.js",at={deflate:[st,"deflate.js"],inflate:[st,"inflate.js"]},ot={pool:[],pendingRequests:[]};function ct(t,e){const n=ot.pool,r=!(e.inputCompressed||e.inputSigned||e.inputEncrypted||e.outputCompressed||e.outputSigned||e.outputEncrypted);let i;if(e.useWebWorkers||void 0===e.useWebWorkers&&t.useWebWorkers&&!r){const n=e.codecType;t.workerScripts?(s=t.workerScripts[n],i="undefined"!=typeof document?s.map((t=>new URL(t,document.baseURI).href)):s):(i=at[n].slice(0),i[0]=(t.workerScriptsPath||"")+i[0])}var s;if(n.length<t.maxWorkers){const t={};return n.push(t),ht(t,e,i)}{const t=n.find((t=>!t.busy));return t?ht(t,e,i):new Promise((t=>ot.pendingRequests.push({resolve:t,options:e,scripts:i})))}}function ht(t,e,n){return t.busy=!0,t.options=e,t.scripts=n,n?function(t){let e;t.interface||(t.worker=new Worker(t.scripts[0]),t.worker.addEventListener(it,i,!1),t.interface={append:t=>n({type:nt,data:t}),flush:()=>n({type:rt})});return t.interface;async function n(n){if(!e){const e=t.scripts.slice(1);await r(Object.assign({type:et,options:t.options,scripts:e}))}return r(n)}function r(n){const r=t.worker,i=new Promise(((t,n)=>e={resolve:t,reject:n}));try{if(n.data)try{r.postMessage(n,[n.data.buffer])}catch(t){r.postMessage(n)}else r.postMessage(n)}catch(n){e.reject(n),e=null,dt(t)}return i}function i(n){const r=n.data;if(e){const n=r.error;if(n){const r=new Error(n.message);r.stack=n.stack,e.reject(r),e=null,dt(t)}else r.type!=et&&r.type!=rt&&r.type!=nt||(r.type==rt?(e.resolve({data:new Uint8Array(r.data),signature:r.signature}),e=null,dt(t)):e.resolve(r.data&&new Uint8Array(r.data)))}}}(t):function(t){const e=function(t){return t.codecType.startsWith(G)?new tt(t):t.codecType.startsWith(J)?new $(t):void 0}(t.options);return{async append(n){try{return await e.append(n)}catch(e){throw dt(t),e}},async flush(){try{return await e.flush()}finally{dt(t)}}}}(t)}function dt(t){if(t.busy=!1,ot.pendingRequests.length){const[{resolve:e,options:n,scripts:r}]=ot.pendingRequests.splice(0,1);e(ht(t,n,r))}else t.worker&&t.worker.terminate(),ot.pool=ot.pool.filter((e=>e!=t))}async function lt(t,e,n,r,i,s,a){const o=Math.max(s.chunkSize,64);return async function s(c=0,h=0){const d=c*o;if(d<i){const l=await e.readUint8Array(d+r,Math.min(o,i-d)),u=await t.append(l);return h+=await ut(n,u),a.onprogress&&a.onprogress(d+l.length,i),s(c+1,h)}{const e=await t.flush();return h+=await ut(n,e.data),{signature:e.signature,length:h}}}()}async function ut(t,e){return e.length&&await t.writeUint8Array(e),e.length}const pt="File format is not recognized",wt="End of central directory not found",gt="End of Zip64 central directory not found",ft="End of Zip64 central directory locator not found",yt="Central directory header not found",mt="Local file header not found",Ut="Zip64 extra field not found",bt="File contains encrypted entry",Et="Encryption not supported",At="Compression method not supported",Rt="utf-8",Dt=["uncompressedSize","compressedSize","offset"],xt=["\0","☺","☻","♥","♦","♣","♠","•","◘","○","◙","♂","♀","♪","♫","☼","►","◄","↕","‼","¶","§","▬","↨","↑","↓","→","←","∟","↔","▲","▼"," ","!",'"',"#","$","%","&","'","(",")","*","+",",","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","<","=",">","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","\\","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~","⌂","Ç","ü","é","â","ä","à","å","ç","ê","ë","è","ï","î","ì","Ä","Å","É","æ","Æ","ô","ö","ò","û","ù","ÿ","Ö","Ü","¢","£","¥","₧","ƒ","á","í","ó","ú","ñ","Ñ","ª","º","¿","⌐","¬","½","¼","¡","«","»","░","▒","▓","│","┤","╡","╢","╖","╕","╣","║","╗","╝","╜","╛","┐","└","┴","┬","├","─","┼","╞","╟","╚","╔","╩","╦","╠","═","╬","╧","╨","╤","╥","╙","╘","╒","╓","╫","╪","┘","┌","█","▄","▌","▐","▀","α","ß","Γ","π","Σ","σ","µ","τ","Φ","Θ","Ω","δ","∞","φ","ε","∩","≡","±","≥","≤","⌠","⌡","÷","≈","°","∙","·","√","ⁿ","²","■"," "];class Ft{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 r=await n.readUint8Array(this.offset,30),i=new DataView(r.buffer),s=void 0===e.password?this.options.password:e.password;let a=s&&s.length&&s;if(this.extraFieldAES){if(99!=this.extraFieldAES.originalCompressionMethod)throw new Error(At);if(3!=this.extraFieldAES.strength)throw new Error(Et)}if(0!=this.compressionMethod&&8!=this.compressionMethod)throw new Error(At);if(i.getUint32(0,!1)!=U)throw new Error(mt);const o=this.localDirectory={};zt(o,i,4),o.rawExtraField=r.subarray(this.offset+30+o.filenameLength,this.offset+30+o.filenameLength+o.extraFieldLength),St(this,o,i,4);let c=this.offset+30+o.filenameLength+o.extraFieldLength;const h=this.bitFlag.encrypted&&o.bitFlag.encrypted;if(h&&!a)throw new Error(bt);const d=await ct(this.config,{codecType:J,inputPassword:a,inputSigned:void 0===e.checkSignature?this.options.checkSignature:e.checkSignature,inputSignature:this.signature,inputCompressed:0!=this.compressionMethod,inputEncrypted:h,useWebWorkers:void 0===e.useWebWorkers?this.options.useWebWorkers:e.useWebWorkers});return t.initialized||await t.init(),await lt(d,n,t,c,this.compressedSize,this.config,{onprogress:e.onprogress}),t.getData()}}function zt(t,e,n){t.version=e.getUint16(n,!0);const r=t.rawBitFlag=e.getUint16(n+2,!0);t.bitFlag={encrypted:1==(1&r),level:(6&r)>>1,dataDescriptor:8==(8&r),languageEncodingFlag:(r&F)==F},t.encrypted=t.bitFlag.encrypted,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 St(t,e,n,r){const i=e.rawExtraField,s=e.extraField=new Map,a=new DataView(new Uint8Array(i).buffer);let o=0;try{for(;o<i.length;){const t=a.getUint16(o,!0),e=a.getUint16(o+2,!0);s.set(t,{type:t,data:i.slice(o+4,o+4+e)}),o+=4+e}}catch(t){}const c=n.getUint16(r+4,!0);e.signature=n.getUint32(r+10,!0),e.uncompressedSize=n.getUint32(r+18,!0),e.compressedSize=n.getUint32(r+14,!0);const h=e.extraFieldZip64=s.get(1);h&&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 r=Dt.filter((t=>e[t]==y));for(let e=0;e<r.length;e++)t[r[e]]=t.values[e];Dt.forEach((n=>{if(e[n]==y){if(!t||void 0===t[n])throw new Error(Ut);e[n]=t[n]}}))}(h,e);const d=e.extraFieldUnicodePath=s.get(28789);d&&It(d,"filename","rawFilename",e,t);let l=e.extraFieldUnicodeComment=s.get(25461);l&&It(l,"comment","rawComment",e,t);const u=e.extraFieldAES=s.get(39169);u?function(t,e,n){if(t){const r=new DataView(t.data.buffer);t.vendorVersion=r.getUint8(0),t.vendorId=r.getUint8(2);const i=r.getUint8(4);t.strength=i,t.originalCompressionMethod=n,e.compressionMethod=t.compressionMethod=r.getUint16(5,!0)}else e.compressionMethod=n}(u,e,c):e.compressionMethod=c,8==e.compressionMethod&&(e.bitFlag.enhancedDeflating=16!=(16&e.rawBitFlag))}function It(t,e,n,r,i){const s=new DataView(t.data.buffer);t.version=s.getUint8(0),t.signature=s.getUint32(1,!0);const a=new z;a.append(i[n]);const o=new DataView(new Uint8Array(4).buffer);o.setUint32(0,a.get()),t[e]=(new TextDecoder).decode(t.data.subarray(5)),i.bitFlag.languageEncodingFlag||t.signature!=o.getUint32(0,!1)||(r[e]=t[e])}function vt(t,e){if(e&&"cp437"!=e.trim().toLowerCase())return new TextDecoder(e).decode(t);{let e="";for(let n=0;n<t.length;n++)e+=xt[t[n]];return e}}const Tt="File already exists",Bt="Zip file comment exceeds 64KB",Lt="File entry comment exceeds 64KB",_t="File entry name exceeds 64KB",kt="Version exceeds 65535",Ct="The minimum year for the date is 1980",Nt="Extra field type exceeds 65535",Ot="Extra field data exceeds 64KB",Mt=new Uint8Array([7,0,2,0,65,69,3,0,0]);const Wt="function";function Pt(t,e){return class{constructor(n){const r=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==Wt)this.codec.onData=r;else{if(typeof this.codec.on!=Wt)throw new Error("Cannot register the callback function");this.codec.on("data",r)}}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 Vt={chunkSize:524288,maxWorkers:"undefined"!=typeof navigator&&navigator.hardwareConcurrency||2,workerScriptsPath:void 0,useWebWorkers:!0};let Zt=Object.assign({},Vt);class Ht extends class{constructor(t,e={},n={}){this.reader=t,this.options=e,this.config=n}async getEntries(t={}){const e=this.reader;e.initialized||await e.init();const n=await async function(t,e,n,r){const i=new Uint8Array(4);if(new DataView(i.buffer).setUint32(0,e),t.size<n)throw new Error(pt);const s=n+r;let a=n,o=await c(a);o||(o=await c(Math.min(s,t.size)));return o;async function c(e){const r=t.size-e,s=await t.readUint8Array(r,e);for(let t=s.length-n;t>=0;t--)if(s[t]==i[0]&&s[t+1]==i[1]&&s[t+2]==i[2]&&s[t+3]==i[3])return{offset:r,buffer:s.slice(t,t+n).buffer}}}(e,A,22,m);if(!n)throw new Error(wt);const r=new DataView(n.buffer);let i,s=r.getUint32(16,!0),a=r.getUint16(8,!0);if(s==y||a==m){i=!0;const t=await e.readUint8Array(n.offset-20,20),r=new DataView(t.buffer);if(Number(r.getUint32(0,!1))!=D)throw new Error(gt);s=Number(r.getBigUint64(8,!0));const o=await e.readUint8Array(s,56),c=new DataView(o.buffer);if(Number(c.getUint32(0,!1))!=R)throw new Error(ft);a=Number(c.getBigUint64(24,!0)),s-=Number(c.getBigUint64(40,!0))}if(s<0||!i&&(s>=e.size||a>=m))throw new Error(pt);const o=await e.readUint8Array(s,e.size-s),c=new DataView(o.buffer),h=[];let d=0;for(let e=0;e<a;e++){const e=new Ft(this.reader,this.config,this.options);if(c.getUint32(d,!1)!=E)throw new Error(yt);e.compressedSize=0,e.uncompressedSize=0,zt(e,c,d+6),e.commentLength=c.getUint16(d+32,!0),e.directory=16==(16&c.getUint8(d+38)),e.offset=c.getUint32(d+42,!0),e.rawFilename=o.subarray(d+46,d+46+e.filenameLength);const n=void 0===t.filenameEncoding?this.options.filenameEncoding:t.filenameEncoding;e.filename=vt(e.rawFilename,e.bitFlag.languageEncodingFlag?Rt:n),!e.directory&&e.filename&&"/"==e.filename.charAt(e.filename.length-1)&&(e.directory=!0),e.rawExtraField=o.subarray(d+46+e.filenameLength,d+46+e.filenameLength+e.extraFieldLength),St(e,e,c,d+6),e.rawComment=o.subarray(d+46+e.filenameLength+e.extraFieldLength,d+46+e.filenameLength+e.extraFieldLength+e.commentLength);const r=void 0===t.commentEncoding?this.options.commentEncoding:t.commentEncoding;e.comment=vt(e.rawComment,e.bitFlag.languageEncodingFlag?Rt:r),h.push(e),d+=46+e.filenameLength+e.extraFieldLength+e.commentLength}return h}async close(){}}{constructor(t,e){super(t,e,Zt)}}class jt 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.length&&"/"==t.charAt(t.length-1)||(t+="/"),this.files.has(t))throw new Error(Tt);const r=(new TextEncoder).encode(t);if(r.length>m)throw new Error(_t);const i=(new TextEncoder).encode(n.comment||"");if(i.length>m)throw new Error(Lt);const s=this.options.version||n.version||0;if(s>m)throw new Error(kt);const a=n.lastModDate||new Date;if(a.getFullYear()<1980)throw new Error(Ct);let o=new Uint8Array(0);const c=n.extraField;if(c){let t=4,e=0;c.forEach((e=>t+=e.length)),o=new Uint8Array(t),c.forEach(((t,n)=>{if(n>m)throw new Error(Nt);if(t.length>m)throw new Error(Ot);o.set(new Uint16Array([n]),e),o.set(new Uint16Array([t.length]),e+2),o.set(t,e+4),e+=4+t.length}))}let h=n.zip64||this.zip64;(this.offset>=y||e&&(e.size>=y||this.offset+e.size>=y))&&(h=!0),await async function(t,e,n,r){const i=t.files,s=t.writer;let a;i.set(e,null);try{let o,c;try{r.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),c=await async function(t,e,n,r,i,s){const a=s.rawFilename,o=s.lastModDate,c=new Uint8Array(26),h=new DataView(c.buffer),d=void 0===s.password?i.password:s.password,l=d&&d.length&&d,u=void 0===s.level?i.level:s.level,p=0!==u&&!s.directory,w=void 0===d||!d.length,g=s.zip64;let f;if(l){f=new Uint8Array(Mt.length+2);new DataView(f.buffer).setUint16(0,x,!0),f.set(Mt,2)}else f=new Uint8Array(0);const m={version:s.version||20,zip64:g,headerArray:c,directory:s.directory,filename:t,rawFilename:a,comment:s.comment,rawComment:s.rawComment,extraFieldZip64:g?new Uint8Array(28):new Uint8Array(0),extraFieldAES:f,rawExtraField:s.rawExtraField};let E=2056,A=0;p&&(A=8);g&&(m.version=m.version>45?m.version:45);l&&(m.encrypted=!0,m.version=m.version>51?m.version:51,E|=1,A=99,p&&(m.extraFieldAES[9]=8));h.setUint16(0,m.version,!0),h.setUint16(2,E,!0),h.setUint16(4,A,!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 R=new Uint8Array(30+a.length);let D;if(new DataView(R.buffer).setUint32(0,U),R.set(c,4),R.set(a,30),e){e.initialized||await e.init();const t=await ct(r,{codecType:G,level:u,outputPassword:d,outputSigned:w,outputCompressed:p,outputEncrypted:Boolean(d),useWebWorkers:void 0===s.useWebWorkers?i.useWebWorkers:s.useWebWorkers});await n.writeUint8Array(R),D=await lt(t,e,n,0,e.size,r,{onprogress:s.onprogress}),m.compressedSize=D.length}else await n.writeUint8Array(R);const F=new Uint8Array(g?24:16),z=new DataView(F.buffer);if(z.setUint32(0,b),e)if(l||void 0===D.signature||(h.setUint32(10,D.signature,!0),z.setUint32(4,D.signature,!0)),g){h.setUint32(14,y,!0),z.setBigUint64(8,BigInt(m.compressedSize),!0),h.setUint32(18,y,!0),z.setBigUint64(16,BigInt(e.size),!0);const t=new DataView(m.extraFieldZip64.buffer);t.setUint16(0,1,!0),t.setUint16(2,24,!0),t.setBigUint64(4,BigInt(e.size),!0),t.setBigUint64(12,BigInt(m.compressedSize),!0)}else h.setUint32(14,m.compressedSize,!0),z.setUint32(8,m.compressedSize,!0),h.setUint32(18,e.size,!0),z.setUint32(12,e.size,!0);return await n.writeUint8Array(F),m.length=R.length+(D?D.length:0)+F.length,m}(e,n,o,t.config,t.options,r)}catch(t){throw i.delete(e),t}if(i.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,Object.assign({},n,{rawFilename:r,rawComment:i,version:s,lastModDate:a,rawExtraField:o,zip64:h}))}async close(t=new Uint8Array(0)){const e=this.writer,n=this.files;let r=0,i=0,s=this.offset,a=n.size;if(t.length){if(!(t.length<=m))throw new Error(Bt);c.setUint16(r+20,t.length,!0)}for(const[,t]of n)i+=46+t.rawFilename.length+t.rawComment.length+t.extraFieldZip64.length+t.extraFieldAES.length+t.rawExtraField.length;(s+i>=y||a>=m)&&(this.zip64=!0);const o=new Uint8Array(i+(this.zip64?98:22)),c=new DataView(o.buffer);for(const[,t]of n){const e=t.rawFilename,n=t.extraFieldZip64,i=t.extraFieldAES,s=n.length+i.length+t.rawExtraField.length;c.setUint32(r,E),c.setUint16(r+4,t.version,!0),o.set(t.headerArray,r+6),c.setUint16(r+30,s,!0),c.setUint16(r+32,t.rawComment.length,!0),t.directory&&c.setUint8(r+38,16),t.zip64?c.setUint32(r+42,y,!0):c.setUint32(r+42,t.offset,!0),o.set(e,r+46),o.set(n,r+46+e.length),o.set(i,r+46+e.length+n.length),o.set(t.rawExtraField,46+e.length+n.length+i.length),o.set(t.rawComment,r+46+e.length+s),r+=46+e.length+s+t.rawComment.length}return this.zip64&&(c.setUint32(r,R),c.setBigUint64(r+4,BigInt(44),!0),c.setUint16(r+12,45,!0),c.setUint16(r+14,45,!0),c.setBigUint64(r+24,BigInt(a),!0),c.setBigUint64(r+32,BigInt(a),!0),c.setBigUint64(r+40,BigInt(i),!0),c.setBigUint64(r+48,BigInt(s),!0),c.setUint32(r+56,D),c.setBigUint64(r+64,BigInt(s+i),!0),c.setUint32(r+72,1,!0),a=m,s=y,r+=76),c.setUint32(r,A),c.setUint16(r+8,a,!0),c.setUint16(r+10,a,!0),c.setUint32(r+12,i,!0),c.setUint32(r+16,s,!0),await e.writeUint8Array(o),await e.writeUint8Array(t),e.getData()}}{constructor(t,e){super(t,e,Zt)}}const Kt=524288;class qt{constructor(t,e,n,r){if(t.root&&r&&r.getChildByName(e))throw new Error("Entry filename already exists");n||(n={}),this.fs=t,this.name=e,this.data=n.data,this.id=t.entries.length,this.parent=r,this.children=[],this.uncompressedSize=0,t.entries.push(this),r&&this.parent.children.push(this)}moveTo(t){if(!t.directory)throw new Error("Target entry is not a directory");if(t.isDescendantOf(this))throw new Error("Entry is a ancestor of target entry");if(this!=t){if(t.getChildByName(this.name))throw new Error("Entry filename already exists");te(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 Yt extends qt{constructor(t,e,n,r){super(t,e,n,r),this.Reader=n.Reader,this.Writer=n.Writer,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 r();async function r(i=0){const s=i*Kt;if(n.onprogress&&n.onprogress(s,t.size),s<t.size){const n=await t.readUint8Array(s,Math.min(Kt,t.size-s));return await e.writeUint8Array(n),r(i+1)}return e.getData()}}(this.reader,t,e))}getText(t,e){return this.getData(new c(t),e)}getBlob(t,e){return this.getData(new u(t),e)}getData64URI(t,e){return this.getData(new d(t),e)}}class Xt extends qt{constructor(t,e,n,r){super(t,e,n,r),this.directory=!0}addDirectory(t){return ne(this,t,null,!0)}addText(t,e){return ne(this,t,{data:e,Reader:o,Writer:c})}addBlob(t,e){return ne(this,t,{data:e,Reader:l,Writer:u})}addData64URI(t,e){return ne(this,t,{data:e,Reader:h,Writer:d})}addHttpContent(t,e,n={}){return ne(this,t,{data:e,Reader:n.useRangeHeader?w:p})}addFileEntry(t){!async function(t,e){e.isDirectory?await r(t,e):await new Promise(((n,r)=>{e.file((r=>{t.addBlob(e.name,r),n()}),r)}));function n(t){return new Promise(((e,n)=>{let r=[];function i(t){t.readEntries((n=>{n.length?(r=r.concat(n),i(t)):e(r)}),n)}t.isDirectory&&i(t.createReader()),t.isFile&&e(r)}))}async function r(t,e){const i=await n(e);for(const e of i)e.isDirectory&&await r(t.addDirectory(e.name)),await new Promise(((n,r)=>{e.isFile&&e.file((r=>{const i=t.addBlob(e.name,r);i.uncompressedSize=r.size,n(i)}),r)}))}}(this,t)}async addData(t,e){return ne(this,t,e)}async importBlob(t,e={}){await this.importZip(new l(t),e)}async importData64URI(t,e={}){await this.importZip(new h(t),e)}async importHttpContent(t,e={}){await this.importZip(e.useRangeHeader?new w(t):new p(t),e)}async exportBlob(t={}){return this.exportZip(new u("application/zip"),t)}async exportData64URI(t={}){return this.exportZip(new d("application/zip"),t)}async importZip(t,e){await t.init();const n=new Ht(t,e),r=await n.getEntries();let i=0;const s=Jt(r,"compressedSize");r.forEach((t=>{let n=this,r=t.filename.split("/"),a=r.pop();if(r.forEach((t=>n=n.getChildByName(t)||new Xt(this.fs,t,null,n))),!t.directory){let r=i;ne(n,a,{data:t,Reader:Qt(Object.assign({},{onprogress:t=>{e.onprogress&&e.onprogress(r+t,s)}}))}),i+=t.compressedSize}}))}async exportZip(t,e){await $t(this);const n=new jt(t,e);return await async function(t,e,n,r){let i=0;async function s(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},{onprogress:t=>{r.onprogress&&r.onprogress(e+a+t,n)}})),i+=o.uncompressedSize,await s(t,o),a++}}await a()}await s(t,e)}(n,this,Jt([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 Gt={FS:class{constructor(){ee(this)}remove(t){te(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){ee(this),await this.root.importBlob(t)}async importData64URI(t){ee(this),await this.root.importData64URI(t)}async importHttpContent(t,e){this.entries=[],this.root=new Xt(this),await this.root.importHttpContent(t,e)}async exportBlob(t){return this.root.exportBlob(t)}async exportData64URI(t){return this.root.exportData64URI(t)}},ZipDirectoryEntry:Xt,ZipFileEntry:Yt};function Jt(t,e){let n=0;return t.forEach((function t(r){n+=r[e],r.children&&r.children.forEach(t)})),n}function Qt(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 u,t);this.data=e,this.blobReader=new l(e)}return this.blobReader.readUint8Array(e,n)}async init(){this.size=this.entry.uncompressedSize}}}async function $t(t){if(t.children.length)for(const e of t.children)e.directory?await $t(e):(e.reader=new e.Reader(e.data),await e.reader.init(),e.uncompressedSize=e.reader.size)}function te(t){const e=t.parent.children;e.forEach(((n,r)=>{n.id==t.id&&e.splice(r,1)}))}function ee(t){t.entries=[],t.root=new Xt(t)}function ne(t,e,n,r){if(t.directory)return r?new Xt(t.fs,e,n,t):new Yt(t.fs,e,n,t);throw new Error("Parent entry is not a directory")}t.BlobReader=l,t.BlobWriter=u,t.Data64URIReader=h,t.Data64URIWriter=d,t.ERR_BAD_FORMAT=pt,t.ERR_CENTRAL_DIRECTORY_NOT_FOUND=yt,t.ERR_DUPLICATED_NAME=Tt,t.ERR_ENCRYPTED=bt,t.ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND=ft,t.ERR_EOCDR_NOT_FOUND=wt,t.ERR_EOCDR_ZIP64_NOT_FOUND=gt,t.ERR_EXTRAFIELD_ZIP64_NOT_FOUND=Ut,t.ERR_HTTP_RANGE=n,t.ERR_INVALID_COMMENT=Bt,t.ERR_INVALID_DATE=Ct,t.ERR_INVALID_ENTRY_COMMENT=Lt,t.ERR_INVALID_ENTRY_NAME=_t,t.ERR_INVALID_EXTRAFIELD_DATA=Ot,t.ERR_INVALID_EXTRAFIELD_TYPE=Nt,t.ERR_INVALID_PASSORD=S,t.ERR_INVALID_SIGNATURE=Q,t.ERR_INVALID_VERSION=kt,t.ERR_LOCAL_FILE_HEADER_NOT_FOUND=mt,t.ERR_UNSUPPORTED_COMPRESSION=At,t.ERR_UNSUPPORTED_ENCRYPTION=Et,t.HttpRangeReader=w,t.HttpReader=p,t.Reader=s,t.TextReader=o,t.TextWriter=c,t.Uint8ArrayReader=class extends s{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=a,t.ZipReader=Ht,t.ZipWriter=jt,t.configure=function(t){if(Zt=Object.assign({},Zt,t),null!=Zt.workerScripts&&null!=Zt.workerScriptsPath)throw new Error("Either workerScripts or workerScriptsPath may be set, not both");if(Zt.workerScripts){if(Zt.workerScripts.deflate&&!Array.isArray(Zt.workerScripts.deflate))throw new Error("workerScripts.deflate must be an array");if(Zt.workerScripts.inflate&&!Array.isArray(Zt.workerScripts.inflate))throw new Error("workerScripts.inflate must be an array")}},t.fs=Gt,t.getMimeType=function(){return"application/octet-stream"},t.initShimAsyncCodec=(t,e={})=>({ZipDeflate:Pt(t.Deflate,e.deflate),ZipInflate:Pt(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="HTTP Range not supported",r="text/plain";class i{constructor(){this.size=0}init(){this.initialized=!0}}class s extends i{}class a extends i{writeUint8Array(t){this.size+=t.length}}class o extends s{constructor(t){super(),this.blob=t,this.size=t.size}readUint8Array(t,e){const n=new FileReader;return new Promise(((r,i)=>{n.onload=t=>r(new Uint8Array(t.target.result)),n.onerror=i,n.readAsArrayBuffer(this.blob.slice(t,t+e))}))}}class c extends a{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 h(t,n){return new Promise(((r,i)=>{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),r()):i(e+(s.statusText||s.status)+".")}),!1),s.addEventListener("error",i,!1),s.open("GET",n),s.responseType="arraybuffer",s.send()}))}const l=4294967295,d=65535,u=1347093252,p=1347094280,g=1347092738,w=1347093766,f=1347094022,y=1347094023,U=39169,m=2048;class b{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 r=0,i=0|t.length;r<i;r++)n=n>>>8^e[255&(n^t[r])];this.crc=n}get(){return~this.crc}}const A="Invalid pasword",E=16,R="raw",D={name:"PBKDF2"},x={name:"HMAC"},F="SHA-1",S={name:"AES-CTR"},v=Object.assign({hash:x},D),z=Object.assign({iterations:1e3,hash:{name:F}},D),I=Object.assign({hash:F},x),T=Object.assign({length:E},S),L=["deriveBits"],_=["sign"],k=528,C=10,M=[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],B=crypto.subtle;class N{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+E<=r.length-C){const t=r.subarray(i,i+E),s=await B.decrypt(Object.assign({counter:this.counter},T),this.keys.decrypt,t);return W(this.counter),n.set(new Uint8Array(s),i),e(i+E)}return this.pendingInput=r.subarray(i),this.signed&&(this.input=P(this.input,t)),n};if(this.password){const e=t.subarray(0,18);await async function(t,e,n){t.counter=new Uint8Array(M);const r=e.subarray(0,16),i=e.subarray(16),s=(new TextEncoder).encode(n),a=await B.importKey(R,s,v,!1,L),o=await B.deriveBits(Object.assign({salt:r},z),a,528),c=new Uint8Array(o),h=c.subarray(64);if(t.keys={decrypt:await B.importKey(R,c.subarray(0,32),S,!0,["decrypt"]),authentication:await B.importKey(R,c.subarray(32,64),I,!1,_),passwordVerification:h},h[0]!=i[0]||h[1]!=i[1])throw new Error(A)}(this,e,this.password),this.password=null,t=t.subarray(18)}let n=new Uint8Array(t.length-C-(t.length-C)%E),r=t;return this.pendingInput.length&&(r=P(this.pendingInput,t),n=V(n,r.length-C-(r.length-C)%E)),e()}async flush(){const t=this.pendingInput,e=this.keys,n=t.subarray(0,t.length-C),r=t.subarray(t.length-C);let i=new Uint8Array(0);if(n.length){const t=await B.decrypt(Object.assign({counter:this.counter},T),e.decrypt,n);i=new Uint8Array(t)}let s=!0;if(this.signed){const t=await B.sign(x,e.authentication,this.input.subarray(0,this.input.length-C)),n=new Uint8Array(t);this.input=null;for(let t=0;t<C;t++)n[t]!=r[t]&&(s=!1)}return{valid:s,data:i}}}class O{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+E<=t.length){const s=t.subarray(i,i+E),a=await B.encrypt(Object.assign({counter:this.counter},T),this.keys.encrypt,s);return W(this.counter),r.set(new Uint8Array(a),i+n.length),e(i+E)}return this.pendingInput=t.subarray(i),this.output=P(this.output,r),r};let n=new Uint8Array(0);this.password&&(n=await async function(t,e){t.counter=new Uint8Array(M);const n=crypto.getRandomValues(new Uint8Array(16)),r=(new TextEncoder).encode(e),i=await B.importKey(R,r,v,!1,L),s=await B.deriveBits(Object.assign({salt:n},z),i,k),a=new Uint8Array(s);return t.keys={encrypt:await B.importKey(R,a.subarray(0,32),S,!0,["encrypt"]),authentication:await B.importKey(R,a.subarray(32,64),I,!1,_),passwordVerification:a.subarray(64)},P(n,t.keys.passwordVerification)}(this,this.password),this.password=null);let r=new Uint8Array(n.length+t.length-t.length%E);return r.set(n,0),this.pendingInput.length&&(t=P(this.pendingInput,t),r=V(r,t.length-t.length%E)),e()}async flush(){let t=new Uint8Array(0);if(this.pendingInput.length){const e=await B.encrypt(Object.assign({counter:this.counter},T),this.keys.encrypt,this.pendingInput);t=new Uint8Array(e),this.output=P(this.output,t)}const e=await B.sign(x,this.keys.authentication,this.output.subarray(18));this.output=null;const n=new Uint8Array(e).subarray(0,C);return{data:P(t,n),signature:n}}}function W(t){for(let e=0;e<16;e++){if(255!=t[e]){t[e]++;break}t[e]=0}}function P(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 V(t,e){if(e&&e>t.length){const n=t;(t=new Uint8Array(e)).set(n,0)}return t}const j="deflate",H="inflate",Z="Invalid signature";class K{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 b,this.decrypt=this.encrypted&&new N(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 q{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 b,this.encrypt=this.encrypted&&new O(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 r=new Uint8Array(e.length+n.data.length);r.set(e,0),r.set(n.data,e.length),e=r}else this.signed&&(t=this.crc32.get());return{data:e,signature:t}}}const Y="init",X="append",G="flush",J="message",Q="z-worker.js",$={deflate:[Q,"deflate.js"],inflate:[Q,"inflate.js"]},tt={pool:[],pendingRequests:[]};function et(t,e){const n=tt.pool,r=!(e.inputCompressed||e.inputSigned||e.inputEncrypted||e.outputCompressed||e.outputSigned||e.outputEncrypted);let i;if(e.useWebWorkers||void 0===e.useWebWorkers&&t.useWebWorkers&&!r){const n=e.codecType;t.workerScripts?(s=t.workerScripts[n],i="undefined"!=typeof document?s.map((t=>new URL(t,document.baseURI).href)):s):(i=$[n].slice(0),i[0]=(t.workerScriptsPath||"")+i[0])}var s;if(n.length<t.maxWorkers){const t={};return n.push(t),nt(t,e,i)}{const t=n.find((t=>!t.busy));return t?nt(t,e,i):new Promise((t=>tt.pendingRequests.push({resolve:t,options:e,scripts:i})))}}function nt(t,e,n){return t.busy=!0,t.options=e,t.scripts=n,n?function(t){let e;t.interface||(t.worker=new Worker(t.scripts[0]),t.worker.addEventListener(J,i,!1),t.interface={append:t=>n({type:X,data:t}),flush:()=>n({type:G})});return t.interface;async function n(n){if(!e){const e=t.scripts.slice(1);await r(Object.assign({type:Y,options:t.options,scripts:e}))}return r(n)}function r(n){const r=t.worker,i=new Promise(((t,n)=>e={resolve:t,reject:n}));try{if(n.data)try{r.postMessage(n,[n.data.buffer])}catch(t){r.postMessage(n)}else r.postMessage(n)}catch(n){e.reject(n),e=null,rt(t)}return i}function i(n){const r=n.data;if(e){const n=r.error;if(n){const r=new Error(n.message);r.stack=n.stack,e.reject(r),e=null,rt(t)}else r.type!=Y&&r.type!=G&&r.type!=X||(r.type==G?(e.resolve({data:new Uint8Array(r.data),signature:r.signature}),e=null,rt(t)):e.resolve(r.data&&new Uint8Array(r.data)))}}}(t):function(t){const e=function(t){return t.codecType.startsWith(j)?new q(t):t.codecType.startsWith(H)?new K(t):void 0}(t.options);return{async append(n){try{return await e.append(n)}catch(e){throw rt(t),e}},async flush(){try{return await e.flush()}finally{rt(t)}}}}(t)}function rt(t){if(t.busy=!1,tt.pendingRequests.length){const[{resolve:e,options:n,scripts:r}]=tt.pendingRequests.splice(0,1);e(nt(t,n,r))}else t.worker&&t.worker.terminate(),tt.pool=tt.pool.filter((e=>e!=t))}async function it(t,e,n,r,i,s,a){const o=Math.max(s.chunkSize,64);return async function s(c=0,h=0){const l=c*o;if(l<i){const d=await e.readUint8Array(l+r,Math.min(o,i-l)),u=await t.append(d);return h+=await st(n,u),a.onprogress&&a.onprogress(l+d.length,i),s(c+1,h)}{const e=await t.flush();return h+=await st(n,e.data),{signature:e.signature,length:h}}}()}async function st(t,e){return e.length&&await t.writeUint8Array(e),e.length}const at="File format is not recognized",ot="End of central directory not found",ct="End of Zip64 central directory not found",ht="End of Zip64 central directory locator not found",lt="Central directory header not found",dt="Local file header not found",ut="Zip64 extra field not found",pt="File contains encrypted entry",gt="Encryption not supported",wt="Compression method not supported",ft="utf-8",yt=["uncompressedSize","compressedSize","offset"],Ut=["\0","☺","☻","♥","♦","♣","♠","•","◘","○","◙","♂","♀","♪","♫","☼","►","◄","↕","‼","¶","§","▬","↨","↑","↓","→","←","∟","↔","▲","▼"," ","!",'"',"#","$","%","&","'","(",")","*","+",",","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","<","=",">","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","\\","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~","⌂","Ç","ü","é","â","ä","à","å","ç","ê","ë","è","ï","î","ì","Ä","Å","É","æ","Æ","ô","ö","ò","û","ù","ÿ","Ö","Ü","¢","£","¥","₧","ƒ","á","í","ó","ú","ñ","Ñ","ª","º","¿","⌐","¬","½","¼","¡","«","»","░","▒","▓","│","┤","╡","╢","╖","╕","╣","║","╗","╝","╜","╛","┐","└","┴","┬","├","─","┼","╞","╟","╚","╔","╩","╦","╠","═","╬","╧","╨","╤","╥","╙","╘","╒","╓","╫","╪","┘","┌","█","▄","▌","▐","▀","α","ß","Γ","π","Σ","σ","µ","τ","Φ","Θ","Ω","δ","∞","φ","ε","∩","≡","±","≥","≤","⌠","⌡","÷","≈","°","∙","·","√","ⁿ","²","■"," "];class mt{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 r=await n.readUint8Array(this.offset,30),i=new DataView(r.buffer),s=void 0===e.password?this.options.password:e.password;let a=s&&s.length&&s;if(this.extraFieldAES){if(99!=this.extraFieldAES.originalCompressionMethod)throw new Error(wt);if(3!=this.extraFieldAES.strength)throw new Error(gt)}if(0!=this.compressionMethod&&8!=this.compressionMethod)throw new Error(wt);if(i.getUint32(0,!1)!=u)throw new Error(dt);const o=this.localDirectory={};bt(o,i,4),o.rawExtraField=r.subarray(this.offset+30+o.filenameLength,this.offset+30+o.filenameLength+o.extraFieldLength),At(this,o,i,4);let c=this.offset+30+o.filenameLength+o.extraFieldLength;const h=this.bitFlag.encrypted&&o.bitFlag.encrypted;if(h&&!a)throw new Error(pt);const l=await et(this.config,{codecType:H,inputPassword:a,inputSigned:void 0===e.checkSignature?this.options.checkSignature:e.checkSignature,inputSignature:this.signature,inputCompressed:0!=this.compressionMethod,inputEncrypted:h,useWebWorkers:void 0===e.useWebWorkers?this.options.useWebWorkers:e.useWebWorkers});return t.initialized||await t.init(),await it(l,n,t,c,this.compressedSize,this.config,{onprogress:e.onprogress}),t.getData()}}function bt(t,e,n){t.version=e.getUint16(n,!0);const r=t.rawBitFlag=e.getUint16(n+2,!0);t.bitFlag={encrypted:1==(1&r),level:(6&r)>>1,dataDescriptor:8==(8&r),languageEncodingFlag:(r&m)==m},t.encrypted=t.bitFlag.encrypted,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 At(t,e,n,r){const i=e.rawExtraField,s=e.extraField=new Map,a=new DataView(new Uint8Array(i).buffer);let o=0;try{for(;o<i.length;){const t=a.getUint16(o,!0),e=a.getUint16(o+2,!0);s.set(t,{type:t,data:i.slice(o+4,o+4+e)}),o+=4+e}}catch(t){}const c=n.getUint16(r+4,!0);e.signature=n.getUint32(r+10,!0),e.uncompressedSize=n.getUint32(r+18,!0),e.compressedSize=n.getUint32(r+14,!0);const h=e.extraFieldZip64=s.get(1);h&&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 r=yt.filter((t=>e[t]==l));for(let e=0;e<r.length;e++)t[r[e]]=t.values[e];yt.forEach((n=>{if(e[n]==l){if(!t||void 0===t[n])throw new Error(ut);e[n]=t[n]}}))}(h,e);const d=e.extraFieldUnicodePath=s.get(28789);d&&Et(d,"filename","rawFilename",e,t);let u=e.extraFieldUnicodeComment=s.get(25461);u&&Et(u,"comment","rawComment",e,t);const p=e.extraFieldAES=s.get(39169);p?function(t,e,n){if(t){const r=new DataView(t.data.buffer);t.vendorVersion=r.getUint8(0),t.vendorId=r.getUint8(2);const i=r.getUint8(4);t.strength=i,t.originalCompressionMethod=n,e.compressionMethod=t.compressionMethod=r.getUint16(5,!0)}else e.compressionMethod=n}(p,e,c):e.compressionMethod=c,8==e.compressionMethod&&(e.bitFlag.enhancedDeflating=16!=(16&e.rawBitFlag))}function Et(t,e,n,r,i){const s=new DataView(t.data.buffer);t.version=s.getUint8(0),t.signature=s.getUint32(1,!0);const a=new b;a.append(i[n]);const o=new DataView(new Uint8Array(4).buffer);o.setUint32(0,a.get()),t[e]=(new TextDecoder).decode(t.data.subarray(5)),i.bitFlag.languageEncodingFlag||t.signature!=o.getUint32(0,!1)||(r[e]=t[e])}function Rt(t,e){if(e&&"cp437"!=e.trim().toLowerCase())return new TextDecoder(e).decode(t);{let e="";for(let n=0;n<t.length;n++)e+=Ut[t[n]];return e}}const Dt="File already exists",xt="Zip file comment exceeds 64KB",Ft="File entry comment exceeds 64KB",St="File entry name exceeds 64KB",vt="Version exceeds 65535",zt="The minimum year for the date is 1980",It="Extra field type exceeds 65535",Tt="Extra field data exceeds 64KB",Lt=new Uint8Array([7,0,2,0,65,69,3,0,0]);const _t="function";function kt(t,e){return class{constructor(n){const r=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==_t)this.codec.onData=r;else{if(typeof this.codec.on!=_t)throw new Error("Cannot register the callback function");this.codec.on("data",r)}}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 Ct={chunkSize:524288,maxWorkers:"undefined"!=typeof navigator&&navigator.hardwareConcurrency||2,workerScriptsPath:void 0,useWebWorkers:!0};let Mt=Object.assign({},Ct);t.BlobReader=o,t.BlobWriter=class extends a{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 s{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),r=4*Math.floor(t/3),i=atob(this.dataURI.substring(r+this.dataStart,4*Math.ceil((t+e)/3)+this.dataStart)),s=t-3*Math.floor(r/4);for(let t=s;t<s+e;t++)n[t-s]=i.charCodeAt(t);return n}},t.Data64URIWriter=class extends a{constructor(t){super(),this.data="data:"+(t||"")+";base64,",this.pending=[]}writeUint8Array(t){super.writeUint8Array(t);let e=0,n=this.pending;const r=this.pending.length;for(this.pending="",e=0;e<3*Math.floor((r+t.length)/3)-r;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=at,t.ERR_CENTRAL_DIRECTORY_NOT_FOUND=lt,t.ERR_DUPLICATED_NAME=Dt,t.ERR_ENCRYPTED=pt,t.ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND=ht,t.ERR_EOCDR_NOT_FOUND=ot,t.ERR_EOCDR_ZIP64_NOT_FOUND=ct,t.ERR_EXTRAFIELD_ZIP64_NOT_FOUND=ut,t.ERR_HTTP_RANGE=n,t.ERR_INVALID_COMMENT=xt,t.ERR_INVALID_DATE=zt,t.ERR_INVALID_ENTRY_COMMENT=Ft,t.ERR_INVALID_ENTRY_NAME=St,t.ERR_INVALID_EXTRAFIELD_DATA=Tt,t.ERR_INVALID_EXTRAFIELD_TYPE=It,t.ERR_INVALID_PASSORD=A,t.ERR_INVALID_SIGNATURE=Z,t.ERR_INVALID_VERSION=vt,t.ERR_LOCAL_FILE_HEADER_NOT_FOUND=dt,t.ERR_UNSUPPORTED_COMPRESSION=wt,t.ERR_UNSUPPORTED_ENCRYPTION=gt,t.HttpRangeReader=class extends s{constructor(t){super(),this.url=t}init(){return super.init(),new Promise(((t,r)=>{const i=new XMLHttpRequest;i.addEventListener("load",(()=>{i.status<400?(this.size=Number(i.getResponseHeader("Content-Length")),"bytes"==i.getResponseHeader("Accept-Ranges")?t():r(new Error(n))):r(e+(i.statusText||i.status)+".")}),!1),i.addEventListener("error",r,!1),i.open("HEAD",this.url),i.send()}))}readUint8Array(t,n){return new Promise(((r,i)=>{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?r(new Uint8Array(s.response)):i(e+(s.statusText||s.status)+".")}),!1),s.addEventListener("error",i,!1),s.send()}))}},t.HttpReader=class extends s{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 r=new XMLHttpRequest;r.addEventListener("load",(()=>{r.status<400?(this.size=Number(r.getResponseHeader("Content-Length")),this.size?t():h().then((()=>t())).catch(n)):n(e+(r.statusText||r.status)+".")}),!1),r.addEventListener("error",n,!1),r.open("HEAD",this.url),r.send()}));await h()}async readUint8Array(t,e){return this.data||await h(this,this.url),new Uint8Array(this.data.subarray(t,t+e))}},t.Reader=s,t.TextReader=class extends s{constructor(t){super(),this.blobReader=new o(new Blob([t],{type:r}))}init(){super.init(),this.blobReader.init(),this.size=this.blobReader.size}readUint8Array(t,e){return this.blobReader.readUint8Array(t,e)}},t.TextWriter=class extends a{constructor(t){super(),this.encoding=t,this.blob=new Blob([],{type:r})}writeUint8Array(t){super.writeUint8Array(t),this.blob=new Blob([this.blob,t.buffer],{type:r})}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 s{constructor(t){super(),this.array=t,this.size=t.length}readUint8Array(t,e){return this.array.slice(t,t+e)}},t.Uint8ArrayWriter=c,t.Writer=a,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,r){const i=new Uint8Array(4);if(new DataView(i.buffer).setUint32(0,e),t.size<n)throw new Error(at);const s=n+r;let a=n,o=await c(a);o||(o=await c(Math.min(s,t.size)));return o;async function c(e){const r=t.size-e,s=await t.readUint8Array(r,e);for(let t=s.length-n;t>=0;t--)if(s[t]==i[0]&&s[t+1]==i[1]&&s[t+2]==i[2]&&s[t+3]==i[3])return{offset:r,buffer:s.slice(t,t+n).buffer}}}(t,w,22,d);if(!e)throw new Error(ot);const n=new DataView(e.buffer);let r,i=n.getUint32(16,!0),s=n.getUint16(8,!0);if(i==l||s==d){r=!0;const n=await t.readUint8Array(e.offset-20,20),a=new DataView(n.buffer);if(Number(a.getUint32(0,!1))!=y)throw new Error(ct);i=Number(a.getBigUint64(8,!0));const o=await t.readUint8Array(i,56),c=new DataView(o.buffer);if(Number(c.getUint32(0,!1))!=f)throw new Error(ht);s=Number(c.getBigUint64(24,!0)),i-=Number(c.getBigUint64(40,!0))}if(i<0||!r&&(i>=t.size||s>=d))throw new Error(at);const a=await t.readUint8Array(i,t.size-i),o=new DataView(a.buffer),c=[];let h=0;for(let t=0;t<s;t++){const t=new mt(this.reader,this.config,this.options);if(o.getUint32(h,!1)!=g)throw new Error(lt);t.compressedSize=0,t.uncompressedSize=0,bt(t,o,h+6),t.commentLength=o.getUint16(h+32,!0),t.directory=16==(16&o.getUint8(h+38)),t.offset=o.getUint32(h+42,!0),t.rawFilename=a.subarray(h+46,h+46+t.filenameLength),t.filename=Rt(t.rawFilename,t.bitFlag.languageEncodingFlag?ft:this.options.filenameEncoding),!t.directory&&t.filename&&"/"==t.filename.charAt(t.filename.length-1)&&(t.directory=!0),t.rawExtraField=a.subarray(h+46+t.filenameLength,h+46+t.filenameLength+t.extraFieldLength),At(t,t,o,h+6),t.rawComment=a.subarray(h+46+t.filenameLength+t.extraFieldLength,h+46+t.filenameLength+t.extraFieldLength+t.commentLength),t.comment=Rt(t.rawComment,t.bitFlag.languageEncodingFlag?ft:this.options.commentEncoding),c.push(t),h+=46+t.filenameLength+t.extraFieldLength+t.commentLength}return c}async close(){}}{constructor(t,e){super(t,e,Mt)}},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.length&&"/"==t.charAt(t.length-1)||(t+="/"),this.files.has(t))throw new Error(Dt);if(n.rawFilename=(new TextEncoder).encode(t),n.rawFilename.length>d)throw new Error(St);if(n.comment=n.comment||"",n.rawComment=(new TextEncoder).encode(n.comment),n.rawComment.length>d)throw new Error(Ft);if(n.version=this.options.version||n.version||0,n.version>d)throw new Error(vt);if(n.lastModDate=n.lastModDate||new Date,n.lastModDate.getFullYear()<1980)throw new Error(zt);const r=n.extraField;if(r){let t=4,e=0;r.forEach((e=>t+=e.length));const i=n.rawExtraField=new Uint8Array(t);r.forEach(((t,n)=>{if(n>d)throw new Error(It);if(t.length>d)throw new Error(Tt);i.set(new Uint16Array([n]),e),i.set(new Uint16Array([t.length]),e+2),i.set(t,e+4),e+=4+t.length}))}n.zip64=n.zip64||this.zip64,await async function(t,e,n,r){const i=t.files,s=t.writer;let a;i.set(e,null);try{let o,h;try{r.bufferedWrite||t.options.bufferedWrite||t.lockWrite?(o=new c,o.init()):(t.lockWrite=new Promise((t=>a=t)),s.initialized||await s.init(),o=s),(t.offset>=l||n&&(n.size>=l||t.offset+n.size>=l))&&(r.zip64=!0),h=await async function(t,e,n,r,i,s){const a=s.rawFilename,o=s.lastModDate,c=new Uint8Array(26),h=new DataView(c.buffer),d=void 0===s.password?i.password:s.password,g=d&&d.length&&d,w=void 0===s.level?i.level:s.level,f=0!==w&&!s.directory,y=void 0===d||!d.length,m=s.zip64;let b;if(g){b=new Uint8Array(Lt.length+2);new DataView(b.buffer).setUint16(0,U,!0),b.set(Lt,2)}else b=new Uint8Array(0);const A={version:s.version||20,zip64:m,headerArray:c,directory:s.directory,filename:t,rawFilename:a,comment:s.comment,rawComment:s.rawComment,extraFieldZip64:m?new Uint8Array(28):new Uint8Array(0),extraFieldAES:b,rawExtraField:s.rawExtraField||new Uint8Array(0)};let E=2056,R=0;f&&(R=8);m&&(A.version=A.version>45?A.version:45);g&&(A.encrypted=!0,A.version=A.version>51?A.version:51,E|=1,R=99,f&&(A.extraFieldAES[9]=8));h.setUint16(0,A.version,!0),h.setUint16(2,E,!0),h.setUint16(4,R,!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 D=new Uint8Array(30+a.length);let x;if(new DataView(D.buffer).setUint32(0,u),D.set(c,4),D.set(a,30),e){e.initialized||await e.init();const t=await et(r,{codecType:j,level:w,outputPassword:d,outputSigned:y,outputCompressed:f,outputEncrypted:Boolean(d),useWebWorkers:void 0===s.useWebWorkers?i.useWebWorkers:s.useWebWorkers});await n.writeUint8Array(D),x=await it(t,e,n,0,e.size,r,{onprogress:s.onprogress}),A.compressedSize=x.length}else await n.writeUint8Array(D);const F=new Uint8Array(m?24:16),S=new DataView(F.buffer);if(S.setUint32(0,p),e)if(g||void 0===x.signature||(h.setUint32(10,x.signature,!0),S.setUint32(4,x.signature,!0)),m){h.setUint32(14,l,!0),S.setBigUint64(8,BigInt(A.compressedSize),!0),h.setUint32(18,l,!0),S.setBigUint64(16,BigInt(e.size),!0);const t=new DataView(A.extraFieldZip64.buffer);t.setUint16(0,1,!0),t.setUint16(2,24,!0),t.setBigUint64(4,BigInt(e.size),!0),t.setBigUint64(12,BigInt(A.compressedSize),!0)}else h.setUint32(14,A.compressedSize,!0),S.setUint32(8,A.compressedSize,!0),h.setUint32(18,e.size,!0),S.setUint32(12,e.size,!0);return await n.writeUint8Array(F),A.length=D.length+(x?x.length:0)+F.length,A}(e,n,o,t.config,t.options,r)}catch(t){throw i.delete(e),t}if(i.set(e,h),o!=s&&(t.lockWrite&&await t.lockWrite,await s.writeUint8Array(o.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=new Uint8Array(0)){const e=this.writer,n=this.files;let r=0,i=0,s=this.offset,a=n.size;if(t.length){if(!(t.length<=d))throw new Error(xt);c.setUint16(r+20,t.length,!0)}for(const[,t]of n)i+=46+t.rawFilename.length+t.rawComment.length+t.extraFieldZip64.length+t.extraFieldAES.length+t.rawExtraField.length;(s+i>=l||a>=d)&&(this.zip64=!0);const o=new Uint8Array(i+(this.zip64?98:22)),c=new DataView(o.buffer);for(const[,t]of n){const e=t.rawFilename,n=t.extraFieldZip64,i=t.extraFieldAES,s=n.length+i.length+t.rawExtraField.length;c.setUint32(r,g),c.setUint16(r+4,t.version,!0),o.set(t.headerArray,r+6),c.setUint16(r+30,s,!0),c.setUint16(r+32,t.rawComment.length,!0),t.directory&&c.setUint8(r+38,16),t.zip64?c.setUint32(r+42,l,!0):c.setUint32(r+42,t.offset,!0),o.set(e,r+46),o.set(n,r+46+e.length),o.set(i,r+46+e.length+n.length),o.set(t.rawExtraField,46+e.length+n.length+i.length),o.set(t.rawComment,r+46+e.length+s),r+=46+e.length+s+t.rawComment.length}return this.zip64&&(c.setUint32(r,f),c.setBigUint64(r+4,BigInt(44),!0),c.setUint16(r+12,45,!0),c.setUint16(r+14,45,!0),c.setBigUint64(r+24,BigInt(a),!0),c.setBigUint64(r+32,BigInt(a),!0),c.setBigUint64(r+40,BigInt(i),!0),c.setBigUint64(r+48,BigInt(s),!0),c.setUint32(r+56,y),c.setBigUint64(r+64,BigInt(s+i),!0),c.setUint32(r+72,1,!0),a=d,s=l,r+=76),c.setUint32(r,w),c.setUint16(r+8,a,!0),c.setUint16(r+10,a,!0),c.setUint32(r+12,i,!0),c.setUint32(r+16,s,!0),await e.writeUint8Array(o),await e.writeUint8Array(t),e.getData()}}{constructor(t,e){super(t,e,Mt)}},t.configure=function(t){if(Mt=Object.assign({},Mt,t),null!=Mt.workerScripts&&null!=Mt.workerScriptsPath)throw new Error("Either workerScripts or workerScriptsPath may be set, not both");if(Mt.workerScripts){if(Mt.workerScripts.deflate&&!Array.isArray(Mt.workerScripts.deflate))throw new Error("workerScripts.deflate must be an array");if(Mt.workerScripts.inflate&&!Array.isArray(Mt.workerScripts.inflate))throw new Error("workerScripts.inflate must be an array")}},t.getMimeType=function(){return"application/octet-stream"},t.initShimAsyncCodec=(t,e={})=>({ZipDeflate:kt(t.Deflate,e.deflate),ZipInflate:kt(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="HTTP Range not supported",r="text/plain";class i{constructor(){this.size=0}init(){this.initialized=!0}}class s extends i{}class a extends i{writeUint8Array(t){this.size+=t.length}}class o extends s{constructor(t){super(),this.blob=t,this.size=t.size}readUint8Array(t,e){const n=new FileReader;return new Promise(((r,i)=>{n.onload=t=>r(new Uint8Array(t.target.result)),n.onerror=i,n.readAsArrayBuffer(this.blob.slice(t,t+e))}))}}class c extends a{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 h(t,n){return new Promise(((r,i)=>{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),r()):i(e+(s.statusText||s.status)+".")}),!1),s.addEventListener("error",i,!1),s.open("GET",n),s.responseType="arraybuffer",s.send()}))}const l=4294967295,d=65535,u=1347093252,p=1347094280,g=1347092738,w=1347093766,f=1347094022,y=1347094023,U=39169,m=2048;class b{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 r=0,i=0|t.length;r<i;r++)n=n>>>8^e[255&(n^t[r])];this.crc=n}get(){return~this.crc}}const A="Invalid pasword",E=16,R="raw",D={name:"PBKDF2"},x={name:"HMAC"},F="SHA-1",v={name:"AES-CTR"},S=Object.assign({hash:x},D),z=Object.assign({iterations:1e3,hash:{name:F}},D),I=Object.assign({hash:F},x),T=Object.assign({length:E},v),L=["deriveBits"],_=["sign"],k=528,C=10,B=[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],M=crypto.subtle;class N{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+E<=r.length-C){const t=r.subarray(i,i+E),s=await M.decrypt(Object.assign({counter:this.counter},T),this.keys.decrypt,t);return W(this.counter),n.set(new Uint8Array(s),i),e(i+E)}return this.pendingInput=r.subarray(i),this.signed&&(this.input=P(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 r=e.subarray(0,16),i=e.subarray(16),s=(new TextEncoder).encode(n),a=await M.importKey(R,s,S,!1,L),o=await M.deriveBits(Object.assign({salt:r},z),a,528),c=new Uint8Array(o),h=c.subarray(64);if(t.keys={decrypt:await M.importKey(R,c.subarray(0,32),v,!0,["decrypt"]),authentication:await M.importKey(R,c.subarray(32,64),I,!1,_),passwordVerification:h},h[0]!=i[0]||h[1]!=i[1])throw new Error(A)}(this,e,this.password),this.password=null,t=t.subarray(18)}let n=new Uint8Array(t.length-C-(t.length-C)%E),r=t;return this.pendingInput.length&&(r=P(this.pendingInput,t),n=V(n,r.length-C-(r.length-C)%E)),e()}async flush(){const t=this.pendingInput,e=this.keys,n=t.subarray(0,t.length-C),r=t.subarray(t.length-C);let i=new Uint8Array(0);if(n.length){const t=await M.decrypt(Object.assign({counter:this.counter},T),e.decrypt,n);i=new Uint8Array(t)}let s=!0;if(this.signed){const t=await M.sign(x,e.authentication,this.input.subarray(0,this.input.length-C)),n=new Uint8Array(t);this.input=null;for(let t=0;t<C;t++)n[t]!=r[t]&&(s=!1)}return{valid:s,data:i}}}class O{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+E<=t.length){const s=t.subarray(i,i+E),a=await M.encrypt(Object.assign({counter:this.counter},T),this.keys.encrypt,s);return W(this.counter),r.set(new Uint8Array(a),i+n.length),e(i+E)}return this.pendingInput=t.subarray(i),this.output=P(this.output,r),r};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)),r=(new TextEncoder).encode(e),i=await M.importKey(R,r,S,!1,L),s=await M.deriveBits(Object.assign({salt:n},z),i,k),a=new Uint8Array(s);return t.keys={encrypt:await M.importKey(R,a.subarray(0,32),v,!0,["encrypt"]),authentication:await M.importKey(R,a.subarray(32,64),I,!1,_),passwordVerification:a.subarray(64)},P(n,t.keys.passwordVerification)}(this,this.password),this.password=null);let r=new Uint8Array(n.length+t.length-t.length%E);return r.set(n,0),this.pendingInput.length&&(t=P(this.pendingInput,t),r=V(r,t.length-t.length%E)),e()}async flush(){let t=new Uint8Array(0);if(this.pendingInput.length){const e=await M.encrypt(Object.assign({counter:this.counter},T),this.keys.encrypt,this.pendingInput);t=new Uint8Array(e),this.output=P(this.output,t)}const e=await M.sign(x,this.keys.authentication,this.output.subarray(18));this.output=null;const n=new Uint8Array(e).subarray(0,C);return{data:P(t,n),signature:n}}}function W(t){for(let e=0;e<16;e++){if(255!=t[e]){t[e]++;break}t[e]=0}}function P(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 V(t,e){if(e&&e>t.length){const n=t;(t=new Uint8Array(e)).set(n,0)}return t}const j="deflate",H="inflate",Z="Invalid signature";class K{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 b,this.decrypt=this.encrypted&&new N(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 q{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 b,this.encrypt=this.encrypted&&new O(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 r=new Uint8Array(e.length+n.data.length);r.set(e,0),r.set(n.data,e.length),e=r}else this.signed&&(t=this.crc32.get());return{data:e,signature:t}}}const Y="init",X="append",G="flush",J="message",Q="z-worker.js",$={deflate:[Q,"deflate.js"],inflate:[Q,"inflate.js"]},tt={pool:[],pendingRequests:[]};function et(t,e){const n=tt.pool,r=!(e.inputCompressed||e.inputSigned||e.inputEncrypted||e.outputCompressed||e.outputSigned||e.outputEncrypted);let i;if(e.useWebWorkers||void 0===e.useWebWorkers&&t.useWebWorkers&&!r){const n=e.codecType;t.workerScripts?(s=t.workerScripts[n],i="undefined"!=typeof document?s.map((t=>new URL(t,document.baseURI).href)):s):(i=$[n].slice(0),i[0]=(t.workerScriptsPath||"")+i[0])}var s;if(n.length<t.maxWorkers){const t={};return n.push(t),nt(t,e,i)}{const t=n.find((t=>!t.busy));return t?nt(t,e,i):new Promise((t=>tt.pendingRequests.push({resolve:t,options:e,scripts:i})))}}function nt(t,e,n){return t.busy=!0,t.options=e,t.scripts=n,n?function(t){let e;t.interface||(t.worker=new Worker(t.scripts[0]),t.worker.addEventListener(J,i,!1),t.interface={append:t=>n({type:X,data:t}),flush:()=>n({type:G})});return t.interface;async function n(n){if(!e){const e=t.scripts.slice(1);await r(Object.assign({type:Y,options:t.options,scripts:e}))}return r(n)}function r(n){const r=t.worker,i=new Promise(((t,n)=>e={resolve:t,reject:n}));try{if(n.data)try{r.postMessage(n,[n.data.buffer])}catch(t){r.postMessage(n)}else r.postMessage(n)}catch(n){e.reject(n),e=null,rt(t)}return i}function i(n){const r=n.data;if(e){const n=r.error;if(n){const r=new Error(n.message);r.stack=n.stack,e.reject(r),e=null,rt(t)}else r.type!=Y&&r.type!=G&&r.type!=X||(r.type==G?(e.resolve({data:new Uint8Array(r.data),signature:r.signature}),e=null,rt(t)):e.resolve(r.data&&new Uint8Array(r.data)))}}}(t):function(t){const e=function(t){return t.codecType.startsWith(j)?new q(t):t.codecType.startsWith(H)?new K(t):void 0}(t.options);return{async append(n){try{return await e.append(n)}catch(e){throw rt(t),e}},async flush(){try{return await e.flush()}finally{rt(t)}}}}(t)}function rt(t){if(t.busy=!1,tt.pendingRequests.length){const[{resolve:e,options:n,scripts:r}]=tt.pendingRequests.splice(0,1);e(nt(t,n,r))}else t.worker&&t.worker.terminate(),tt.pool=tt.pool.filter((e=>e!=t))}async function it(t,e,n,r,i,s,a){const o=Math.max(s.chunkSize,64);return async function s(c=0,h=0){const l=c*o;if(l<i){const d=await e.readUint8Array(l+r,Math.min(o,i-l)),u=await t.append(d);return h+=await st(n,u),a.onprogress&&a.onprogress(l+d.length,i),s(c+1,h)}{const e=await t.flush();return h+=await st(n,e.data),{signature:e.signature,length:h}}}()}async function st(t,e){return e.length&&await t.writeUint8Array(e),e.length}const at="File format is not recognized",ot="End of central directory not found",ct="End of Zip64 central directory not found",ht="End of Zip64 central directory locator not found",lt="Central directory header not found",dt="Local file header not found",ut="Zip64 extra field not found",pt="File contains encrypted entry",gt="Encryption not supported",wt="Compression method not supported",ft="utf-8",yt=["uncompressedSize","compressedSize","offset"],Ut=["\0","☺","☻","♥","♦","♣","♠","•","◘","○","◙","♂","♀","♪","♫","☼","►","◄","↕","‼","¶","§","▬","↨","↑","↓","→","←","∟","↔","▲","▼"," ","!",'"',"#","$","%","&","'","(",")","*","+",",","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","<","=",">","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","\\","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~","⌂","Ç","ü","é","â","ä","à","å","ç","ê","ë","è","ï","î","ì","Ä","Å","É","æ","Æ","ô","ö","ò","û","ù","ÿ","Ö","Ü","¢","£","¥","₧","ƒ","á","í","ó","ú","ñ","Ñ","ª","º","¿","⌐","¬","½","¼","¡","«","»","░","▒","▓","│","┤","╡","╢","╖","╕","╣","║","╗","╝","╜","╛","┐","└","┴","┬","├","─","┼","╞","╟","╚","╔","╩","╦","╠","═","╬","╧","╨","╤","╥","╙","╘","╒","╓","╫","╪","┘","┌","█","▄","▌","▐","▀","α","ß","Γ","π","Σ","σ","µ","τ","Φ","Θ","Ω","δ","∞","φ","ε","∩","≡","±","≥","≤","⌠","⌡","÷","≈","°","∙","·","√","ⁿ","²","■"," "];class mt{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 r=await n.readUint8Array(this.offset,30),i=new DataView(r.buffer),s=void 0===e.password?this.options.password:e.password;let a=s&&s.length&&s;if(this.extraFieldAES){if(99!=this.extraFieldAES.originalCompressionMethod)throw new Error(wt);if(3!=this.extraFieldAES.strength)throw new Error(gt)}if(0!=this.compressionMethod&&8!=this.compressionMethod)throw new Error(wt);if(i.getUint32(0,!1)!=u)throw new Error(dt);const o=this.localDirectory={};bt(o,i,4),o.rawExtraField=r.subarray(this.offset+30+o.filenameLength,this.offset+30+o.filenameLength+o.extraFieldLength),At(this,o,i,4);let c=this.offset+30+o.filenameLength+o.extraFieldLength;const h=this.bitFlag.encrypted&&o.bitFlag.encrypted;if(h&&!a)throw new Error(pt);const l=await et(this.config,{codecType:H,inputPassword:a,inputSigned:void 0===e.checkSignature?this.options.checkSignature:e.checkSignature,inputSignature:this.signature,inputCompressed:0!=this.compressionMethod,inputEncrypted:h,useWebWorkers:void 0===e.useWebWorkers?this.options.useWebWorkers:e.useWebWorkers});return t.initialized||await t.init(),await it(l,n,t,c,this.compressedSize,this.config,{onprogress:e.onprogress}),t.getData()}}function bt(t,e,n){t.version=e.getUint16(n,!0);const r=t.rawBitFlag=e.getUint16(n+2,!0);t.bitFlag={encrypted:1==(1&r),level:(6&r)>>1,dataDescriptor:8==(8&r),languageEncodingFlag:(r&m)==m},t.encrypted=t.bitFlag.encrypted,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 At(t,e,n,r){const i=e.rawExtraField,s=e.extraField=new Map,a=new DataView(new Uint8Array(i).buffer);let o=0;try{for(;o<i.length;){const t=a.getUint16(o,!0),e=a.getUint16(o+2,!0);s.set(t,{type:t,data:i.slice(o+4,o+4+e)}),o+=4+e}}catch(t){}const c=n.getUint16(r+4,!0);e.signature=n.getUint32(r+10,!0),e.uncompressedSize=n.getUint32(r+18,!0),e.compressedSize=n.getUint32(r+14,!0);const h=e.extraFieldZip64=s.get(1);h&&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 r=yt.filter((t=>e[t]==l));for(let e=0;e<r.length;e++)t[r[e]]=t.values[e];yt.forEach((n=>{if(e[n]==l){if(!t||void 0===t[n])throw new Error(ut);e[n]=t[n]}}))}(h,e);const d=e.extraFieldUnicodePath=s.get(28789);d&&Et(d,"filename","rawFilename",e,t);let u=e.extraFieldUnicodeComment=s.get(25461);u&&Et(u,"comment","rawComment",e,t);const p=e.extraFieldAES=s.get(39169);p?function(t,e,n){if(t){const r=new DataView(t.data.buffer);t.vendorVersion=r.getUint8(0),t.vendorId=r.getUint8(2);const i=r.getUint8(4);t.strength=i,t.originalCompressionMethod=n,e.compressionMethod=t.compressionMethod=r.getUint16(5,!0)}else e.compressionMethod=n}(p,e,c):e.compressionMethod=c,8==e.compressionMethod&&(e.bitFlag.enhancedDeflating=16!=(16&e.rawBitFlag))}function Et(t,e,n,r,i){const s=new DataView(t.data.buffer);t.version=s.getUint8(0),t.signature=s.getUint32(1,!0);const a=new b;a.append(i[n]);const o=new DataView(new Uint8Array(4).buffer);o.setUint32(0,a.get()),t[e]=(new TextDecoder).decode(t.data.subarray(5)),i.bitFlag.languageEncodingFlag||t.signature!=o.getUint32(0,!1)||(r[e]=t[e])}function Rt(t,e){if(e&&"cp437"!=e.trim().toLowerCase())return new TextDecoder(e).decode(t);{let e="";for(let n=0;n<t.length;n++)e+=Ut[t[n]];return e}}const Dt="File already exists",xt="Zip file comment exceeds 64KB",Ft="File entry comment exceeds 64KB",vt="File entry name exceeds 64KB",St="Version exceeds 65535",zt="The minimum year for the date is 1980",It="Extra field type exceeds 65535",Tt="Extra field data exceeds 64KB",Lt=new Uint8Array([7,0,2,0,65,69,3,0,0]);const _t="function";function kt(t,e){return class{constructor(n){const r=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==_t)this.codec.onData=r;else{if(typeof this.codec.on!=_t)throw new Error("Cannot register the callback function");this.codec.on("data",r)}}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 Ct={chunkSize:524288,maxWorkers:"undefined"!=typeof navigator&&navigator.hardwareConcurrency||2,workerScriptsPath:void 0,useWebWorkers:!0};let Bt=Object.assign({},Ct);t.BlobReader=o,t.BlobWriter=class extends a{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 s{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),r=4*Math.floor(t/3),i=atob(this.dataURI.substring(r+this.dataStart,4*Math.ceil((t+e)/3)+this.dataStart)),s=t-3*Math.floor(r/4);for(let t=s;t<s+e;t++)n[t-s]=i.charCodeAt(t);return n}},t.Data64URIWriter=class extends a{constructor(t){super(),this.data="data:"+(t||"")+";base64,",this.pending=[]}writeUint8Array(t){super.writeUint8Array(t);let e=0,n=this.pending;const r=this.pending.length;for(this.pending="",e=0;e<3*Math.floor((r+t.length)/3)-r;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=at,t.ERR_CENTRAL_DIRECTORY_NOT_FOUND=lt,t.ERR_DUPLICATED_NAME=Dt,t.ERR_ENCRYPTED=pt,t.ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND=ht,t.ERR_EOCDR_NOT_FOUND=ot,t.ERR_EOCDR_ZIP64_NOT_FOUND=ct,t.ERR_EXTRAFIELD_ZIP64_NOT_FOUND=ut,t.ERR_HTTP_RANGE=n,t.ERR_INVALID_COMMENT=xt,t.ERR_INVALID_DATE=zt,t.ERR_INVALID_ENTRY_COMMENT=Ft,t.ERR_INVALID_ENTRY_NAME=vt,t.ERR_INVALID_EXTRAFIELD_DATA=Tt,t.ERR_INVALID_EXTRAFIELD_TYPE=It,t.ERR_INVALID_PASSORD=A,t.ERR_INVALID_SIGNATURE=Z,t.ERR_INVALID_VERSION=St,t.ERR_LOCAL_FILE_HEADER_NOT_FOUND=dt,t.ERR_UNSUPPORTED_COMPRESSION=wt,t.ERR_UNSUPPORTED_ENCRYPTION=gt,t.HttpRangeReader=class extends s{constructor(t){super(),this.url=t}init(){return super.init(),new Promise(((t,r)=>{const i=new XMLHttpRequest;i.addEventListener("load",(()=>{i.status<400?(this.size=Number(i.getResponseHeader("Content-Length")),"bytes"==i.getResponseHeader("Accept-Ranges")?t():r(new Error(n))):r(e+(i.statusText||i.status)+".")}),!1),i.addEventListener("error",r,!1),i.open("HEAD",this.url),i.send()}))}readUint8Array(t,n){return new Promise(((r,i)=>{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?r(new Uint8Array(s.response)):i(e+(s.statusText||s.status)+".")}),!1),s.addEventListener("error",i,!1),s.send()}))}},t.HttpReader=class extends s{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 r=new XMLHttpRequest;r.addEventListener("load",(()=>{r.status<400?(this.size=Number(r.getResponseHeader("Content-Length")),this.size?t():h().then((()=>t())).catch(n)):n(e+(r.statusText||r.status)+".")}),!1),r.addEventListener("error",n,!1),r.open("HEAD",this.url),r.send()}));await h()}async readUint8Array(t,e){return this.data||await h(this,this.url),new Uint8Array(this.data.subarray(t,t+e))}},t.Reader=s,t.TextReader=class extends s{constructor(t){super(),this.blobReader=new o(new Blob([t],{type:r}))}init(){super.init(),this.blobReader.init(),this.size=this.blobReader.size}readUint8Array(t,e){return this.blobReader.readUint8Array(t,e)}},t.TextWriter=class extends a{constructor(t){super(),this.encoding=t,this.blob=new Blob([],{type:r})}writeUint8Array(t){super.writeUint8Array(t),this.blob=new Blob([this.blob,t.buffer],{type:r})}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 s{constructor(t){super(),this.array=t,this.size=t.length}readUint8Array(t,e){return this.array.slice(t,t+e)}},t.Uint8ArrayWriter=c,t.Writer=a,t.ZipReader=class extends class{constructor(t,e={},n={}){this.reader=t,this.options=e,this.config=n}async getEntries(t={}){const e=this.reader;e.initialized||await e.init();const n=await async function(t,e,n,r){const i=new Uint8Array(4);if(new DataView(i.buffer).setUint32(0,e),t.size<n)throw new Error(at);const s=n+r;let a=n,o=await c(a);o||(o=await c(Math.min(s,t.size)));return o;async function c(e){const r=t.size-e,s=await t.readUint8Array(r,e);for(let t=s.length-n;t>=0;t--)if(s[t]==i[0]&&s[t+1]==i[1]&&s[t+2]==i[2]&&s[t+3]==i[3])return{offset:r,buffer:s.slice(t,t+n).buffer}}}(e,w,22,d);if(!n)throw new Error(ot);const r=new DataView(n.buffer);let i,s=r.getUint32(16,!0),a=r.getUint16(8,!0);if(s==l||a==d){i=!0;const t=await e.readUint8Array(n.offset-20,20),r=new DataView(t.buffer);if(Number(r.getUint32(0,!1))!=y)throw new Error(ct);s=Number(r.getBigUint64(8,!0));const o=await e.readUint8Array(s,56),c=new DataView(o.buffer);if(Number(c.getUint32(0,!1))!=f)throw new Error(ht);a=Number(c.getBigUint64(24,!0)),s-=Number(c.getBigUint64(40,!0))}if(s<0||!i&&(s>=e.size||a>=d))throw new Error(at);const o=await e.readUint8Array(s,e.size-s),c=new DataView(o.buffer),h=[];let u=0;for(let e=0;e<a;e++){const e=new mt(this.reader,this.config,this.options);if(c.getUint32(u,!1)!=g)throw new Error(lt);e.compressedSize=0,e.uncompressedSize=0,bt(e,c,u+6),e.commentLength=c.getUint16(u+32,!0),e.directory=16==(16&c.getUint8(u+38)),e.offset=c.getUint32(u+42,!0),e.rawFilename=o.subarray(u+46,u+46+e.filenameLength);const n=void 0===t.filenameEncoding?this.options.filenameEncoding:t.filenameEncoding;e.filename=Rt(e.rawFilename,e.bitFlag.languageEncodingFlag?ft:n),!e.directory&&e.filename&&"/"==e.filename.charAt(e.filename.length-1)&&(e.directory=!0),e.rawExtraField=o.subarray(u+46+e.filenameLength,u+46+e.filenameLength+e.extraFieldLength),At(e,e,c,u+6),e.rawComment=o.subarray(u+46+e.filenameLength+e.extraFieldLength,u+46+e.filenameLength+e.extraFieldLength+e.commentLength);const r=void 0===t.commentEncoding?this.options.commentEncoding:t.commentEncoding;e.comment=Rt(e.rawComment,e.bitFlag.languageEncodingFlag?ft:r),h.push(e),u+=46+e.filenameLength+e.extraFieldLength+e.commentLength}return h}async close(){}}{constructor(t,e){super(t,e,Bt)}},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.length&&"/"==t.charAt(t.length-1)||(t+="/"),this.files.has(t))throw new Error(Dt);const r=(new TextEncoder).encode(t);if(r.length>d)throw new Error(vt);const i=(new TextEncoder).encode(n.comment||"");if(i.length>d)throw new Error(Ft);const s=this.options.version||n.version||0;if(s>d)throw new Error(St);const a=n.lastModDate||new Date;if(a.getFullYear()<1980)throw new Error(zt);let o=new Uint8Array(0);const h=n.extraField;if(h){let t=4,e=0;h.forEach((e=>t+=e.length)),o=new Uint8Array(t),h.forEach(((t,n)=>{if(n>d)throw new Error(It);if(t.length>d)throw new Error(Tt);o.set(new Uint16Array([n]),e),o.set(new Uint16Array([t.length]),e+2),o.set(t,e+4),e+=4+t.length}))}let g=n.zip64||this.zip64;(this.offset>=l||e&&(e.size>=l||this.offset+e.size>=l))&&(g=!0),await async function(t,e,n,r){const i=t.files,s=t.writer;let a;i.set(e,null);try{let o,h;try{r.bufferedWrite||t.options.bufferedWrite||t.lockWrite?(o=new c,o.init()):(t.lockWrite=new Promise((t=>a=t)),s.initialized||await s.init(),o=s),h=await async function(t,e,n,r,i,s){const a=s.rawFilename,o=s.lastModDate,c=new Uint8Array(26),h=new DataView(c.buffer),d=void 0===s.password?i.password:s.password,g=d&&d.length&&d,w=void 0===s.level?i.level:s.level,f=0!==w&&!s.directory,y=void 0===d||!d.length,m=s.zip64;let b;if(g){b=new Uint8Array(Lt.length+2);new DataView(b.buffer).setUint16(0,U,!0),b.set(Lt,2)}else b=new Uint8Array(0);const A={version:s.version||20,zip64:m,headerArray:c,directory:s.directory,filename:t,rawFilename:a,comment:s.comment,rawComment:s.rawComment,extraFieldZip64:m?new Uint8Array(28):new Uint8Array(0),extraFieldAES:b,rawExtraField:s.rawExtraField};let E=2056,R=0;f&&(R=8);m&&(A.version=A.version>45?A.version:45);g&&(A.encrypted=!0,A.version=A.version>51?A.version:51,E|=1,R=99,f&&(A.extraFieldAES[9]=8));h.setUint16(0,A.version,!0),h.setUint16(2,E,!0),h.setUint16(4,R,!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 D=new Uint8Array(30+a.length);let x;if(new DataView(D.buffer).setUint32(0,u),D.set(c,4),D.set(a,30),e){e.initialized||await e.init();const t=await et(r,{codecType:j,level:w,outputPassword:d,outputSigned:y,outputCompressed:f,outputEncrypted:Boolean(d),useWebWorkers:void 0===s.useWebWorkers?i.useWebWorkers:s.useWebWorkers});await n.writeUint8Array(D),x=await it(t,e,n,0,e.size,r,{onprogress:s.onprogress}),A.compressedSize=x.length}else await n.writeUint8Array(D);const F=new Uint8Array(m?24:16),v=new DataView(F.buffer);if(v.setUint32(0,p),e)if(g||void 0===x.signature||(h.setUint32(10,x.signature,!0),v.setUint32(4,x.signature,!0)),m){h.setUint32(14,l,!0),v.setBigUint64(8,BigInt(A.compressedSize),!0),h.setUint32(18,l,!0),v.setBigUint64(16,BigInt(e.size),!0);const t=new DataView(A.extraFieldZip64.buffer);t.setUint16(0,1,!0),t.setUint16(2,24,!0),t.setBigUint64(4,BigInt(e.size),!0),t.setBigUint64(12,BigInt(A.compressedSize),!0)}else h.setUint32(14,A.compressedSize,!0),v.setUint32(8,A.compressedSize,!0),h.setUint32(18,e.size,!0),v.setUint32(12,e.size,!0);return await n.writeUint8Array(F),A.length=D.length+(x?x.length:0)+F.length,A}(e,n,o,t.config,t.options,r)}catch(t){throw i.delete(e),t}if(i.set(e,h),o!=s&&(t.lockWrite&&await t.lockWrite,await s.writeUint8Array(o.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,Object.assign({},n,{rawFilename:r,rawComment:i,version:s,lastModDate:a,rawExtraField:o,zip64:g}))}async close(t=new Uint8Array(0)){const e=this.writer,n=this.files;let r=0,i=0,s=this.offset,a=n.size;if(t.length){if(!(t.length<=d))throw new Error(xt);c.setUint16(r+20,t.length,!0)}for(const[,t]of n)i+=46+t.rawFilename.length+t.rawComment.length+t.extraFieldZip64.length+t.extraFieldAES.length+t.rawExtraField.length;(s+i>=l||a>=d)&&(this.zip64=!0);const o=new Uint8Array(i+(this.zip64?98:22)),c=new DataView(o.buffer);for(const[,t]of n){const e=t.rawFilename,n=t.extraFieldZip64,i=t.extraFieldAES,s=n.length+i.length+t.rawExtraField.length;c.setUint32(r,g),c.setUint16(r+4,t.version,!0),o.set(t.headerArray,r+6),c.setUint16(r+30,s,!0),c.setUint16(r+32,t.rawComment.length,!0),t.directory&&c.setUint8(r+38,16),t.zip64?c.setUint32(r+42,l,!0):c.setUint32(r+42,t.offset,!0),o.set(e,r+46),o.set(n,r+46+e.length),o.set(i,r+46+e.length+n.length),o.set(t.rawExtraField,46+e.length+n.length+i.length),o.set(t.rawComment,r+46+e.length+s),r+=46+e.length+s+t.rawComment.length}return this.zip64&&(c.setUint32(r,f),c.setBigUint64(r+4,BigInt(44),!0),c.setUint16(r+12,45,!0),c.setUint16(r+14,45,!0),c.setBigUint64(r+24,BigInt(a),!0),c.setBigUint64(r+32,BigInt(a),!0),c.setBigUint64(r+40,BigInt(i),!0),c.setBigUint64(r+48,BigInt(s),!0),c.setUint32(r+56,y),c.setBigUint64(r+64,BigInt(s+i),!0),c.setUint32(r+72,1,!0),a=d,s=l,r+=76),c.setUint32(r,w),c.setUint16(r+8,a,!0),c.setUint16(r+10,a,!0),c.setUint32(r+12,i,!0),c.setUint32(r+16,s,!0),await e.writeUint8Array(o),await e.writeUint8Array(t),e.getData()}}{constructor(t,e){super(t,e,Bt)}},t.configure=function(t){if(Bt=Object.assign({},Bt,t),null!=Bt.workerScripts&&null!=Bt.workerScriptsPath)throw new Error("Either workerScripts or workerScriptsPath may be set, not both");if(Bt.workerScripts){if(Bt.workerScripts.deflate&&!Array.isArray(Bt.workerScripts.deflate))throw new Error("workerScripts.deflate must be an array");if(Bt.workerScripts.inflate&&!Array.isArray(Bt.workerScripts.inflate))throw new Error("workerScripts.inflate must be an array")}},t.getMimeType=function(){return"application/octet-stream"},t.initShimAsyncCodec=(t,e={})=>({ZipDeflate:kt(t.Deflate,e.deflate),ZipInflate:kt(t.Inflate,e.inflate)}),Object.defineProperty(t,"__esModule",{value:!0})})); |
@@ -75,4 +75,4 @@ declare module "zip.js" { | ||
export class ZipReader { | ||
constructor(reader: Reader, options?: ZipReaderOptions); | ||
getEntries(): Promise<Entry[]>; | ||
constructor(reader: Reader, options?: ZipReaderOptions | GetEntriesOptions); | ||
getEntries(options?: GetEntriesOptions): Promise<Entry[]>; | ||
close(): Promise<any>; | ||
@@ -84,5 +84,8 @@ } | ||
password?: string; | ||
useWebWorkers?: boolean; | ||
} | ||
export interface GetEntriesOptions { | ||
filenameEncoding?: string; | ||
commentEncoding?: string; | ||
useWebWorkers?: boolean; | ||
} | ||
@@ -170,6 +173,6 @@ | ||
addData64URI(name: string, dataURI: string): ZipFileEntry; | ||
addHttpContent(name: string, url: string, options?: AddHttpContentOptions): ZipFileEntry; | ||
importBlob(blob: Blob, options?: ZipReaderOptions): Promise<void>; | ||
importData64URI(dataURI: string, options?: ZipReaderOptions): Promise<void>; | ||
importHttpContent(url: string, options?: ZipReaderOptions | AddHttpContentOptions): Promise<void>; | ||
addHttpContent(name: string, url: string, options?: GetHttpContentOptions): ZipFileEntry; | ||
importBlob(blob: Blob, options?: ZipReaderOptions | GetEntriesOptions): Promise<void>; | ||
importData64URI(dataURI: string, options?: ZipReaderOptions | GetEntriesOptions): Promise<void>; | ||
importHttpContent(url: string, options?: ZipReaderOptions | GetEntriesOptions | GetHttpContentOptions): Promise<void>; | ||
exportBlob(options?: ZipWriterOptions): Promise<Blob>; | ||
@@ -179,3 +182,3 @@ exportData64URI(options?: ZipWriterOptions): Promise<string>; | ||
export interface AddHttpContentOptions { | ||
export interface GetHttpContentOptions { | ||
useRangeHeader?: boolean; | ||
@@ -189,5 +192,5 @@ } | ||
getById(id: number): ZipEntry; | ||
importBlob(blob: Blob, options?: ZipReaderOptions): Promise<void>; | ||
importData64URI(dataURI: string, options?: ZipReaderOptions): Promise<void>; | ||
importHttpContent(url: string, options?: ZipReaderOptions): Promise<void>; | ||
importBlob(blob: Blob, options?: ZipReaderOptions | GetEntriesOptions): Promise<void>; | ||
importData64URI(dataURI: string, options?: ZipReaderOptions | GetEntriesOptions): Promise<void>; | ||
importHttpContent(url: string, options?: ZipReaderOptions | GetEntriesOptions | GetHttpContentOptions): Promise<void>; | ||
exportBlob(options?: ZipWriterOptions): Promise<Blob>; | ||
@@ -194,0 +197,0 @@ exportData64URI(options?: ZipWriterOptions): Promise<string>; |
@@ -89,3 +89,3 @@ /* | ||
async getEntries() { | ||
async getEntries(options = {}) { | ||
const reader = this.reader; | ||
@@ -138,3 +138,4 @@ if (!reader.initialized) { | ||
fileEntry.rawFilename = directoryArray.subarray(offset + 46, offset + 46 + fileEntry.filenameLength); | ||
fileEntry.filename = decodeString(fileEntry.rawFilename, fileEntry.bitFlag.languageEncodingFlag ? CHARSET_UTF8 : this.options.filenameEncoding); | ||
const filenameEncoding = options.filenameEncoding === undefined ? this.options.filenameEncoding : options.filenameEncoding; | ||
fileEntry.filename = decodeString(fileEntry.rawFilename, fileEntry.bitFlag.languageEncodingFlag ? CHARSET_UTF8 : filenameEncoding); | ||
if (!fileEntry.directory && fileEntry.filename && fileEntry.filename.charAt(fileEntry.filename.length - 1) == DIRECTORY_SIGNATURE) { | ||
@@ -147,3 +148,4 @@ fileEntry.directory = true; | ||
+ fileEntry.filenameLength + fileEntry.extraFieldLength + fileEntry.commentLength); | ||
fileEntry.comment = decodeString(fileEntry.rawComment, fileEntry.bitFlag.languageEncodingFlag ? CHARSET_UTF8 : this.options.commentEncoding); | ||
const commentEncoding = options.commentEncoding === undefined ? this.options.commentEncoding : options.commentEncoding; | ||
fileEntry.comment = decodeString(fileEntry.rawComment, fileEntry.bitFlag.languageEncodingFlag ? CHARSET_UTF8 : commentEncoding); | ||
entries.push(fileEntry); | ||
@@ -150,0 +152,0 @@ offset += 46 + fileEntry.filenameLength + fileEntry.extraFieldLength + fileEntry.commentLength; |
@@ -94,19 +94,19 @@ /* | ||
} | ||
options.rawFilename = (new TextEncoder()).encode(name); | ||
if (options.rawFilename.length > MAX_16_BITS) { | ||
const rawFilename = (new TextEncoder()).encode(name); | ||
if (rawFilename.length > MAX_16_BITS) { | ||
throw new Error(ERR_INVALID_ENTRY_NAME); | ||
} | ||
options.comment = options.comment || ""; | ||
options.rawComment = (new TextEncoder()).encode(options.comment); | ||
if (options.rawComment.length > MAX_16_BITS) { | ||
const rawComment = (new TextEncoder()).encode(options.comment || ""); | ||
if (rawComment.length > MAX_16_BITS) { | ||
throw new Error(ERR_INVALID_ENTRY_COMMENT); | ||
} | ||
options.version = this.options.version || options.version || 0; | ||
if (options.version > MAX_16_BITS) { | ||
const version = this.options.version || options.version || 0; | ||
if (version > MAX_16_BITS) { | ||
throw new Error(ERR_INVALID_VERSION); | ||
} | ||
options.lastModDate = options.lastModDate || new Date(); | ||
if (options.lastModDate.getFullYear() < 1980) { | ||
const lastModDate = options.lastModDate || new Date(); | ||
if (lastModDate.getFullYear() < 1980) { | ||
throw new Error(ERR_INVALID_DATE); | ||
} | ||
let rawExtraField = new Uint8Array(0); | ||
const extraField = options.extraField; | ||
@@ -116,3 +116,3 @@ if (extraField) { | ||
extraField.forEach(data => extraFieldSize += data.length); | ||
const rawExtraField = options.rawExtraField = new Uint8Array(extraFieldSize); | ||
rawExtraField = new Uint8Array(extraFieldSize); | ||
extraField.forEach((data, type) => { | ||
@@ -131,4 +131,7 @@ if (type > MAX_16_BITS) { | ||
} | ||
options.zip64 = options.zip64 || this.zip64; | ||
await addFile(this, name, reader, options); | ||
let zip64 = options.zip64 || this.zip64; | ||
if (this.offset >= MAX_32_BITS || (reader && (reader.size >= MAX_32_BITS || this.offset + reader.size >= MAX_32_BITS))) { | ||
zip64 = true; | ||
} | ||
await addFile(this, name, reader, Object.assign({}, options, { rawFilename, rawComment, version, lastModDate, rawExtraField, zip64 })); | ||
} | ||
@@ -236,5 +239,3 @@ | ||
} | ||
if (zipWriter.offset >= MAX_32_BITS || (reader && (reader.size >= MAX_32_BITS || zipWriter.offset + reader.size >= MAX_32_BITS))) { | ||
options.zip64 = true; | ||
} | ||
fileEntry = await createFileEntry(name, reader, fileWriter, zipWriter.config, zipWriter.options, options); | ||
@@ -297,3 +298,3 @@ } catch (error) { | ||
extraFieldAES, | ||
rawExtraField: options.rawExtraField || new Uint8Array(0) | ||
rawExtraField: options.rawExtraField | ||
}; | ||
@@ -300,0 +301,0 @@ let bitFlag = BITFLAG_DATA_DESCRIPTOR | BITFLAG_LANG_ENCODING_FLAG; |
@@ -6,3 +6,3 @@ { | ||
"license": "BSD-3-Clause", | ||
"version": "2.0.9", | ||
"version": "2.0.10", | ||
"keywords": [ | ||
@@ -9,0 +9,0 @@ "zip", |
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
AI-detected potential code anomaly
Supply chain riskAI has identified unusual behaviors that may pose a security risk.
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
790608
13319
7