@zip.js/zip.js 2.5.22 → 2.5.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- !function(){"use strict";const{Array:e,Object:t,Math:n,Error:s,Uint8Array:r,Uint16Array:a,Uint32Array:i,Int32Array:o,DataView:c,Promise:l,TextEncoder:h,crypto:u,postMessage:p,TransformStream:f,ReadableStream:d,WritableStream:g,CompressionStream:w,DecompressionStream:y}=globalThis,_=[];for(let e=0;256>e;e++){let t=e;for(let e=0;8>e;e++)1&t?t=t>>>1^3988292384:t>>>=1;_[e]=t}class m{constructor(e){this.crc=e||-1}append(e){let t=0|this.crc;for(let n=0,s=0|e.length;s>n;n++)t=t>>>8^_[255&(t^e[n])];this.crc=t}get(){return~this.crc}}class b extends f{constructor(){super({start(){this.crc32=new m},transform(e){this.crc32.append(e)},flush(e){const t=new r(4);new c(t.buffer).setUint32(0,this.crc32.get()),e.enqueue(t)}})}}const k={concat(e,t){if(0===e.length||0===t.length)return e.concat(t);const n=e[e.length-1],s=k.getPartial(n);return 32===s?e.concat(t):k._shiftRight(t,s,0|n,e.slice(0,e.length-1))},bitLength(e){const t=e.length;if(0===t)return 0;const n=e[t-1];return 32*(t-1)+k.getPartial(n)},clamp(e,t){if(32*e.length<t)return e;const s=(e=e.slice(0,n.ceil(t/32))).length;return t&=31,s>0&&t&&(e[s-1]=k.partial(t,e[s-1]&2147483648>>t-1,1)),e},partial:(e,t,n)=>32===e?t:(n?0|t:t<<32-e)+1099511627776*e,getPartial:e=>n.round(e/1099511627776)||32,_shiftRight(e,t,n,s){for(void 0===s&&(s=[]);t>=32;t-=32)s.push(n),n=0;if(0===t)return s.concat(e);for(let r=0;r<e.length;r++)s.push(n|e[r]>>>t),n=e[r]<<32-t;const r=e.length?e[e.length-1]:0,a=k.getPartial(r);return s.push(k.partial(t+a&31,t+a>32?n:s.pop(),1)),s}},v={bytes:{fromBits(e){const t=k.bitLength(e)/8,n=new r(t);let s;for(let r=0;t>r;r++)0==(3&r)&&(s=e[r/4]),n[r]=s>>>24,s<<=8;return n},toBits(e){const t=[];let n,s=0;for(n=0;n<e.length;n++)s=s<<8|e[n],3==(3&n)&&(t.push(s),s=0);return 3&n&&t.push(k.partial(8*(3&n),s)),t}}},S={sha1:function(e){e?(this._h=e._h.slice(0),this._buffer=e._buffer.slice(0),this._length=e._length):this.reset()}};S.sha1.prototype={blockSize:512,reset(){const e=this;return e._h=this._init.slice(0),e._buffer=[],e._length=0,e},update(e){const t=this;"string"==typeof e&&(e=v.utf8String.toBits(e));const n=t._buffer=k.concat(t._buffer,e),r=t._length,a=t._length=r+k.bitLength(e);if(a>9007199254740991)throw new s("Cannot hash more than 2^53 - 1 bits");const o=new i(n);let c=0;for(let e=t.blockSize+r-(t.blockSize+r&t.blockSize-1);a>=e;e+=t.blockSize)t._block(o.subarray(16*c,16*(c+1))),c+=1;return n.splice(0,16*c),t},finalize(){const e=this;let t=e._buffer;const s=e._h;t=k.concat(t,[k.partial(1,1)]);for(let e=t.length+2;15&e;e++)t.push(0);for(t.push(n.floor(e._length/4294967296)),t.push(0|e._length);t.length;)e._block(t.splice(0,16));return e.reset(),s},_init:[1732584193,4023233417,2562383102,271733878,3285377520],_key:[1518500249,1859775393,2400959708,3395469782],_f:(e,t,n,s)=>e>19?e>39?e>59?e>79?void 0:t^n^s:t&n|t&s|n&s:t^n^s:t&n|~t&s,_S:(e,t)=>t<<e|t>>>32-e,_block(t){const s=this,r=s._h,a=e(80);for(let e=0;16>e;e++)a[e]=t[e];let i=r[0],o=r[1],c=r[2],l=r[3],h=r[4];for(let e=0;79>=e;e++){16>e||(a[e]=s._S(1,a[e-3]^a[e-8]^a[e-14]^a[e-16]));const t=s._S(5,i)+s._f(e,o,c,l)+h+a[e]+s._key[n.floor(e/20)]|0;h=l,l=c,c=s._S(30,o),o=i,i=t}r[0]=r[0]+i|0,r[1]=r[1]+o|0,r[2]=r[2]+c|0,r[3]=r[3]+l|0,r[4]=r[4]+h|0}};const T={getRandomValues(e){const t=new i(e.buffer),s=e=>{let t=987654321;const s=4294967295;return()=>(t=36969*(65535&t)+(t>>16)&s,(((t<<16)+(e=18e3*(65535&e)+(e>>16)&s)&s)/4294967296+.5)*(n.random()>.5?1:-1))};for(let r,a=0;a<e.length;a+=4){const e=s(4294967296*(r||n.random()));r=987654071*e(),t[a/4]=4294967296*e()|0}return e}},z={importKey:e=>new z.hmacSha1(v.bytes.toBits(e)),pbkdf2(e,t,n,r){if(n=n||1e4,0>r||0>n)throw new s("invalid params to pbkdf2");const a=1+(r>>5)<<2;let i,o,l,h,u;const p=new ArrayBuffer(a),f=new c(p);let d=0;const g=k;for(t=v.bytes.toBits(t),u=1;(a||1)>d;u++){for(i=o=e.encrypt(g.concat(t,[u])),l=1;n>l;l++)for(o=e.encrypt(o),h=0;h<o.length;h++)i[h]^=o[h];for(l=0;(a||1)>d&&l<i.length;l++)f.setInt32(d,i[l]),d+=4}return p.slice(0,r/8)},hmacSha1:class{constructor(e){const t=this,n=t._hash=S.sha1,s=[[],[]],r=n.prototype.blockSize/32;t._baseHash=[new n,new n],e.length>r&&(e=n.hash(e));for(let t=0;r>t;t++)s[0][t]=909522486^e[t],s[1][t]=1549556828^e[t];t._baseHash[0].update(s[0]),t._baseHash[1].update(s[1]),t._resultHash=new n(t._baseHash[0])}reset(){const e=this;e._resultHash=new e._hash(e._baseHash[0]),e._updated=!1}update(e){this._updated=!0,this._resultHash.update(e)}digest(){const e=this,t=e._resultHash.finalize(),n=new e._hash(e._baseHash[1]).update(t).finalize();return e.reset(),n}encrypt(e){if(this._updated)throw new s("encrypt on already updated hmac called!");return this.update(e),this.digest(e)}}},D="Invalid pasword",C=16,R={name:"PBKDF2"},I=t.assign({hash:{name:"HMAC"}},R),V=t.assign({iterations:1e3,hash:{name:"SHA-1"}},R),q=["deriveBits"],A=[8,12,16],B=[16,24,32],H=10,K=[0,0,0,0],x="undefined",W="function",P=typeof u!=x,U=P&&typeof u.subtle!=x,E=P&&typeof u.getRandomValues==W,L=P&&U&&typeof u.subtle.importKey==W,M=P&&U&&typeof u.subtle.deriveBits==W,j=v.bytes,F=class{constructor(e){const t=this;t._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],t._tables[0][0][0]||t._precompute();const n=t._tables[0][4],r=t._tables[1],a=e.length;let i,o,c,l=1;if(4!==a&&6!==a&&8!==a)throw new s("invalid aes key size");for(t._key=[o=e.slice(0),c=[]],i=a;4*a+28>i;i++){let e=o[i-1];(i%a==0||8===a&&i%a==4)&&(e=n[e>>>24]<<24^n[e>>16&255]<<16^n[e>>8&255]<<8^n[255&e],i%a==0&&(e=e<<8^e>>>24^l<<24,l=l<<1^283*(l>>7))),o[i]=o[i-a]^e}for(let e=0;i;e++,i--){const t=o[3&e?i:i-4];c[e]=4>=i||4>e?t:r[0][n[t>>>24]]^r[1][n[t>>16&255]]^r[2][n[t>>8&255]]^r[3][n[255&t]]}}encrypt(e){return this._crypt(e,0)}decrypt(e){return this._crypt(e,1)}_precompute(){const e=this._tables[0],t=this._tables[1],n=e[4],s=t[4],r=[],a=[];let i,o,c,l;for(let e=0;256>e;e++)a[(r[e]=e<<1^283*(e>>7))^e]=e;for(let h=i=0;!n[h];h^=o||1,i=a[i]||1){let a=i^i<<1^i<<2^i<<3^i<<4;a=a>>8^255&a^99,n[h]=a,s[a]=h,l=r[c=r[o=r[h]]];let u=16843009*l^65537*c^257*o^16843008*h,p=257*r[a]^16843008*a;for(let n=0;4>n;n++)e[n][h]=p=p<<24^p>>>8,t[n][a]=u=u<<24^u>>>8}for(let n=0;5>n;n++)e[n]=e[n].slice(0),t[n]=t[n].slice(0)}_crypt(e,t){if(4!==e.length)throw new s("invalid aes block size");const n=this._key[t],r=n.length/4-2,a=[0,0,0,0],i=this._tables[t],o=i[0],c=i[1],l=i[2],h=i[3],u=i[4];let p,f,d,g=e[0]^n[0],w=e[t?3:1]^n[1],y=e[2]^n[2],_=e[t?1:3]^n[3],m=4;for(let e=0;r>e;e++)p=o[g>>>24]^c[w>>16&255]^l[y>>8&255]^h[255&_]^n[m],f=o[w>>>24]^c[y>>16&255]^l[_>>8&255]^h[255&g]^n[m+1],d=o[y>>>24]^c[_>>16&255]^l[g>>8&255]^h[255&w]^n[m+2],_=o[_>>>24]^c[g>>16&255]^l[w>>8&255]^h[255&y]^n[m+3],m+=4,g=p,w=f,y=d;for(let e=0;4>e;e++)a[t?3&-e:e]=u[g>>>24]<<24^u[w>>16&255]<<16^u[y>>8&255]<<8^u[255&_]^n[m++],p=g,g=w,w=y,y=_,_=p;return a}},N=class{constructor(e,t){this._prf=e,this._initIv=t,this._iv=t}reset(){this._iv=this._initIv}update(e){return this.calculate(this._prf,e,this._iv)}incWord(e){if(255==(e>>24&255)){let t=e>>16&255,n=e>>8&255,s=255&e;255===t?(t=0,255===n?(n=0,255===s?s=0:++s):++n):++t,e=0,e+=t<<16,e+=n<<8,e+=s}else e+=1<<24;return e}incCounter(e){0===(e[0]=this.incWord(e[0]))&&(e[1]=this.incWord(e[1]))}calculate(e,t,n){let s;if(!(s=t.length))return[];const r=k.bitLength(t);for(let r=0;s>r;r+=4){this.incCounter(n);const s=e.encrypt(n);t[r]^=s[0],t[r+1]^=s[1],t[r+2]^=s[2],t[r+3]^=s[3]}return k.clamp(t,r)}},O=z.hmacSha1;class G extends f{constructor(n,a,i){let o;super({start(){t.assign(this,{ready:new l((e=>this.resolveReady=e)),password:n,signed:a,strength:i-1,pending:new r})},async transform(t,n){const a=this;if(a.password){const n=a.password;a.password=null;const r=Z(t,0,A[a.strength]+2);await(async(e,t,n)=>{await Q(e,n,Z(t,0,A[e.strength]));const r=Z(t,A[e.strength]),a=e.keys.passwordVerification;if(a[0]!=r[0]||a[1]!=r[1])throw new s(D)})(a,r,n),a.ctr=new N(new F(a.keys.key),e.from(K)),a.hmac=new O(a.keys.authentication),t=Z(t,A[a.strength]+2),a.resolveReady()}else await a.ready;const i=new r(t.length-H-(t.length-H)%C);n.enqueue(J(a,t,i,0,H,!0))},async flush(e){const t=this;await t.ready;const n=t.pending,s=Z(n,0,n.length-H),a=Z(n,n.length-H);let i=new r;if(s.length){const e=ee(j,s);t.hmac.update(e);const n=t.ctr.update(e);i=$(j,n)}if(o.valid=!0,t.signed){const e=Z($(j,t.hmac.digest()),0,H);for(let t=0;H>t;t++)e[t]!=a[t]&&(o.valid=!1)}e.enqueue(i)}}),o=this}}class X extends f{constructor(n,s){let a;super({start(){t.assign(this,{ready:new l((e=>this.resolveReady=e)),password:n,strength:s-1,pending:new r})},async transform(t,n){const s=this;let a=new r;if(s.password){const t=s.password;s.password=null,a=await(async(e,t)=>{const n=(s=new r(A[e.strength]),E?u.getRandomValues(s):T.getRandomValues(s));var s;return await Q(e,t,n),Y(n,e.keys.passwordVerification)})(s,t),s.ctr=new N(new F(s.keys.key),e.from(K)),s.hmac=new O(s.keys.authentication),s.resolveReady()}else await s.ready;const i=new r(a.length+t.length-t.length%C);i.set(a,0),n.enqueue(J(s,t,i,a.length,0))},async flush(e){const t=this;await t.ready;let n=new r;if(t.pending.length){const e=t.ctr.update(ee(j,t.pending));t.hmac.update(e),n=$(j,e)}a.signature=$(j,t.hmac.digest()).slice(0,H),e.enqueue(Y(n,a.signature))}}),a=this}}function J(e,t,n,s,a,i){const o=t.length-a;let c;for(e.pending.length&&(t=Y(e.pending,t),n=((e,t)=>{if(t&&t>e.length){const n=e;(e=new r(t)).set(n,0)}return e})(n,o-o%C)),c=0;o-C>=c;c+=C){const r=ee(j,Z(t,c,c+C));i&&e.hmac.update(r);const a=e.ctr.update(r);i||e.hmac.update(a),n.set($(j,a),c+s)}return e.pending=Z(t,c),n}async function Q(e,n,s){const a=(e=>{if(void 0===h){const t=new r((e=unescape(encodeURIComponent(e))).length);for(let n=0;n<t.length;n++)t[n]=e.charCodeAt(n);return t}return(new h).encode(e)})(n),i=await((e,t,n,s,r)=>L?u.subtle.importKey("raw",t,n,!1,r):z.importKey(t))(0,a,I,0,q),o=await(async(e,t,n)=>M?await u.subtle.deriveBits(e,t,n):z.pbkdf2(t,e.salt,V.iterations,n))(t.assign({salt:s},V),i,8*(2*B[e.strength]+2)),c=new r(o);e.keys={key:ee(j,Z(c,0,B[e.strength])),authentication:ee(j,Z(c,B[e.strength],2*B[e.strength])),passwordVerification:Z(c,2*B[e.strength])}}function Y(e,t){let n=e;return e.length+t.length&&(n=new r(e.length+t.length),n.set(e,0),n.set(t,e.length)),n}function Z(e,t,n){return e.subarray(t,n)}function $(e,t){return e.fromBits(t)}function ee(e,t){return e.toBits(t)}class te extends f{constructor(e,n){let r;super({start(){t.assign(this,{password:e,passwordVerification:n}),ae(this,e)},transform(e,t){const n=this;if(n.password){const t=se(n,e.subarray(0,12));if(n.password=null,t[11]!=n.passwordVerification)throw new s(D);e=e.subarray(12)}t.enqueue(se(n,e))},flush(){r.valid=!0}}),r=this}}class ne extends f{constructor(e,n){super({start(){t.assign(this,{password:e,passwordVerification:n}),ae(this,e)},transform(e,t){const n=this;let s,a;if(n.password){n.password=null;const t=u.getRandomValues(new r(12));t[11]=n.passwordVerification,s=new r(e.length+t.length),s.set(re(n,t),0),a=12}else s=new r(e.length),a=0;s.set(re(n,e),a),t.enqueue(s)},flush(){}})}}function se(e,t){const n=new r(t.length);for(let s=0;s<t.length;s++)n[s]=oe(e)^t[s],ie(e,n[s]);return n}function re(e,t){const n=new r(t.length);for(let s=0;s<t.length;s++)n[s]=oe(e)^t[s],ie(e,t[s]);return n}function ae(e,t){e.keys=[305419896,591751049,878082192],e.crcKey0=new m(e.keys[0]),e.crcKey2=new m(e.keys[2]);for(let n=0;n<t.length;n++)ie(e,t.charCodeAt(n))}function ie(e,t){e.crcKey0.append([t]),e.keys[0]=~e.crcKey0.get(),e.keys[1]=le(e.keys[1]+ce(e.keys[0])),e.keys[1]=le(n.imul(e.keys[1],134775813)+1),e.crcKey2.append([e.keys[1]>>>24]),e.keys[2]=~e.crcKey2.get()}function oe(e){const t=2|e.keys[2];return ce(n.imul(t,1^t)>>>8)}function ce(e){return 255&e}function le(e){return 4294967295&e}class he extends f{constructor(e,t){let n;super({start(){n=new e(t)},transform(e,t){e=n.append(e),t.enqueue(e)},flush(e){const t=n.flush();t&&e.enqueue(t)}})}}const ue="Invalid signature",pe="deflate-raw",fe="undefined",de=typeof w==fe,ge=typeof y==fe;let we=!0,ye=!0;class _e extends f{constructor(e,t,{chunkSize:n},...s){super({},...s);const{compressed:r,encrypted:a,useCompressionStream:i,password:o,passwordVerification:l,encryptionStrength:h,zipCrypto:u,signed:p}=t,f=this;let d,g,y=ke(super.readable);if(a&&!u||!p||([y,d]=y.tee(),d=d.pipeThrough(new b)),r)if(void 0!==i&&!i||de&&!ye)y=be(e,y,n);else try{y=y.pipeThrough(new w(pe))}catch(t){ye=!1,y=be(e,y,n)}a&&(u?y=y.pipeThrough(new ne(o,l)):(g=new X(o,h),y=y.pipeThrough(g))),ve(f,y,(async()=>{let e;a&&!u&&(e=g.signature),a&&!u||!p||(e=await d.getReader().read(),e=new c(e.value.buffer).getUint32(0)),f.signature=e}))}}class me extends f{constructor(e,t,{chunkSize:n},...r){super({},...r);const{zipCrypto:a,encrypted:i,password:o,passwordVerification:l,signed:h,encryptionStrength:u,compressed:p,useCompressionStream:f}=t;let d,g,w=ke(super.readable);if(i&&(a?w=w.pipeThrough(new te(o,l)):(g=new G(o,h,u),w=w.pipeThrough(g))),p)if(void 0!==f&&!f||ge&&!we)w=be(e,w,n);else try{w=w.pipeThrough(new y(pe))}catch(t){we=!1,w=be(e,w,n)}i&&!a||!h||([w,d]=w.tee(),d=d.pipeThrough(new b)),ve(this,w,(async()=>{if(i&&!a&&!g.valid)throw new s(ue);if((!i||a)&&h){const e=await d.getReader().read();if(e!=new c(e.value.buffer).getUint32(0,!1))throw new s(ue)}}))}}function be(e,t,n){return t.pipeThrough(new he(e,{chunkSize:n}))}function ke(e){return e.pipeThrough(new f({transform(e,t){e&&e.length&&t.enqueue(e)}}))}function ve(e,n,s){e.length=0,n=n.pipeThrough(new f({transform(t,n){t&&t.length&&(e.length+=t.length,n.enqueue(t))},flush:s})),t.defineProperty(e,"readable",{get:()=>n})}const Se="deflate",Te="inflate",ze="data";class De{constructor(e,t,n,s,r){const{codecType:a}=s;async function i(a){const i=new a(e,s,r);await t.pipeThrough(i).pipeTo(n,{preventClose:!0});const{length:o,signature:c}=i;return{length:o,signature:c}}a.startsWith(Se)?this.run=()=>i(_e):a.startsWith(Te)&&(this.run=()=>i(me))}}const Ce=new Map;let Re,Ie=0;async function Ve(e){try{const{options:t,scripts:n,config:s}=e,{codecType:r}=t;let a;n&&n.length&&importScripts.apply(void 0,n),self.initCodec&&self.initCodec(),r.startsWith(Se)?a=self.Deflate:r.startsWith(Te)&&(a=self.Inflate);const i={highWaterMark:1,size:()=>s.chunkSize},o=new d({async pull(e){let t=new l(((e,t)=>Ce.set(Ie,{resolve:e,reject:t})));qe({type:"pull",messageId:Ie}),Ie=(Ie+1)%Number.MAX_SAFE_INTEGER;const{value:n,done:s}=await t;e.enqueue(n),s&&e.close()}},i),c=new g({write(e){qe({type:ze,data:e})}},i);Re=new De(a,o,c,t,s),qe({type:"close",result:await Re.run()})}catch(e){const{message:t,stack:n}=e;p({error:{message:t,stack:n}})}}function qe(e){if(e.data){let{data:t}=e;if(t&&t.length)try{t.length!=t.buffer.byteLength&&(t=new r(t)),e.data=t.buffer,p(e,[e.data])}catch(t){p(e)}else p(e)}else p(e)}function Ae(e,n,s){return class{constructor(a){const i=this;a.hasOwnProperty("level")&&void 0===a.level&&delete a.level,i.codec=new e(t.assign({},n,a)),s(i.codec,(e=>{if(i.pendingData){const{pendingData:t}=i;i.pendingData=new r(t.length+e.length),i.pendingData.set(t,0),i.pendingData.set(e,t.length)}else i.pendingData=new r(e)}))}append(e){return this.codec.push(e),a(this)}flush(){return this.codec.push(new r,!0),a(this)}};function a(e){if(e.pendingData){const t=e.pendingData;return e.pendingData=null,t}return new r}}addEventListener("message",(async e=>{const t=e.data,{type:n,messageId:s,data:a,done:i}=t;try{if("start"==n&&Ve(t),n==ze){const{resolve:e}=Ce.get(s);Ce.delete(s),e({value:new r(a),done:i})}}catch(e){p({error:{message:e.message,stack:e.stack}})}})),self.initCodec=()=>{const{Deflate:e,Inflate:t}=((e,t={},n)=>({Deflate:Ae(e.Deflate,t.deflate,n),Inflate:Ae(e.Inflate,t.inflate,n)}))(fflate,void 0,((e,t)=>e.ondata=t));self.Deflate=e,self.Inflate=t}}();
1
+ !function(){"use strict";const{Array:e,Object:t,Math:n,Error:s,Uint8Array:r,Uint16Array:a,Uint32Array:i,Int32Array:o,DataView:c,Promise:l,TextEncoder:h,crypto:u,postMessage:p,TransformStream:f,ReadableStream:d,WritableStream:g,CompressionStream:w,DecompressionStream:y}=globalThis,_=[];for(let e=0;256>e;e++){let t=e;for(let e=0;8>e;e++)1&t?t=t>>>1^3988292384:t>>>=1;_[e]=t}class m{constructor(e){this.crc=e||-1}append(e){let t=0|this.crc;for(let n=0,s=0|e.length;s>n;n++)t=t>>>8^_[255&(t^e[n])];this.crc=t}get(){return~this.crc}}class b extends f{constructor(){super({start(){this.crc32=new m},transform(e){this.crc32.append(e)},flush(e){const t=new r(4);new c(t.buffer).setUint32(0,this.crc32.get()),e.enqueue(t)}})}}const k={concat(e,t){if(0===e.length||0===t.length)return e.concat(t);const n=e[e.length-1],s=k.getPartial(n);return 32===s?e.concat(t):k._shiftRight(t,s,0|n,e.slice(0,e.length-1))},bitLength(e){const t=e.length;if(0===t)return 0;const n=e[t-1];return 32*(t-1)+k.getPartial(n)},clamp(e,t){if(32*e.length<t)return e;const s=(e=e.slice(0,n.ceil(t/32))).length;return t&=31,s>0&&t&&(e[s-1]=k.partial(t,e[s-1]&2147483648>>t-1,1)),e},partial:(e,t,n)=>32===e?t:(n?0|t:t<<32-e)+1099511627776*e,getPartial:e=>n.round(e/1099511627776)||32,_shiftRight(e,t,n,s){for(void 0===s&&(s=[]);t>=32;t-=32)s.push(n),n=0;if(0===t)return s.concat(e);for(let r=0;r<e.length;r++)s.push(n|e[r]>>>t),n=e[r]<<32-t;const r=e.length?e[e.length-1]:0,a=k.getPartial(r);return s.push(k.partial(t+a&31,t+a>32?n:s.pop(),1)),s}},v={bytes:{fromBits(e){const t=k.bitLength(e)/8,n=new r(t);let s;for(let r=0;t>r;r++)0==(3&r)&&(s=e[r/4]),n[r]=s>>>24,s<<=8;return n},toBits(e){const t=[];let n,s=0;for(n=0;n<e.length;n++)s=s<<8|e[n],3==(3&n)&&(t.push(s),s=0);return 3&n&&t.push(k.partial(8*(3&n),s)),t}}},S={sha1:function(e){e?(this._h=e._h.slice(0),this._buffer=e._buffer.slice(0),this._length=e._length):this.reset()}};S.sha1.prototype={blockSize:512,reset(){const e=this;return e._h=this._init.slice(0),e._buffer=[],e._length=0,e},update(e){const t=this;"string"==typeof e&&(e=v.utf8String.toBits(e));const n=t._buffer=k.concat(t._buffer,e),r=t._length,a=t._length=r+k.bitLength(e);if(a>9007199254740991)throw new s("Cannot hash more than 2^53 - 1 bits");const o=new i(n);let c=0;for(let e=t.blockSize+r-(t.blockSize+r&t.blockSize-1);a>=e;e+=t.blockSize)t._block(o.subarray(16*c,16*(c+1))),c+=1;return n.splice(0,16*c),t},finalize(){const e=this;let t=e._buffer;const s=e._h;t=k.concat(t,[k.partial(1,1)]);for(let e=t.length+2;15&e;e++)t.push(0);for(t.push(n.floor(e._length/4294967296)),t.push(0|e._length);t.length;)e._block(t.splice(0,16));return e.reset(),s},_init:[1732584193,4023233417,2562383102,271733878,3285377520],_key:[1518500249,1859775393,2400959708,3395469782],_f:(e,t,n,s)=>e>19?e>39?e>59?e>79?void 0:t^n^s:t&n|t&s|n&s:t^n^s:t&n|~t&s,_S:(e,t)=>t<<e|t>>>32-e,_block(t){const s=this,r=s._h,a=e(80);for(let e=0;16>e;e++)a[e]=t[e];let i=r[0],o=r[1],c=r[2],l=r[3],h=r[4];for(let e=0;79>=e;e++){16>e||(a[e]=s._S(1,a[e-3]^a[e-8]^a[e-14]^a[e-16]));const t=s._S(5,i)+s._f(e,o,c,l)+h+a[e]+s._key[n.floor(e/20)]|0;h=l,l=c,c=s._S(30,o),o=i,i=t}r[0]=r[0]+i|0,r[1]=r[1]+o|0,r[2]=r[2]+c|0,r[3]=r[3]+l|0,r[4]=r[4]+h|0}};const T={getRandomValues(e){const t=new i(e.buffer),s=e=>{let t=987654321;const s=4294967295;return()=>(t=36969*(65535&t)+(t>>16)&s,(((t<<16)+(e=18e3*(65535&e)+(e>>16)&s)&s)/4294967296+.5)*(n.random()>.5?1:-1))};for(let r,a=0;a<e.length;a+=4){const e=s(4294967296*(r||n.random()));r=987654071*e(),t[a/4]=4294967296*e()|0}return e}},z={importKey:e=>new z.hmacSha1(v.bytes.toBits(e)),pbkdf2(e,t,n,r){if(n=n||1e4,0>r||0>n)throw new s("invalid params to pbkdf2");const a=1+(r>>5)<<2;let i,o,l,h,u;const p=new ArrayBuffer(a),f=new c(p);let d=0;const g=k;for(t=v.bytes.toBits(t),u=1;(a||1)>d;u++){for(i=o=e.encrypt(g.concat(t,[u])),l=1;n>l;l++)for(o=e.encrypt(o),h=0;h<o.length;h++)i[h]^=o[h];for(l=0;(a||1)>d&&l<i.length;l++)f.setInt32(d,i[l]),d+=4}return p.slice(0,r/8)},hmacSha1:class{constructor(e){const t=this,n=t._hash=S.sha1,s=[[],[]],r=n.prototype.blockSize/32;t._baseHash=[new n,new n],e.length>r&&(e=n.hash(e));for(let t=0;r>t;t++)s[0][t]=909522486^e[t],s[1][t]=1549556828^e[t];t._baseHash[0].update(s[0]),t._baseHash[1].update(s[1]),t._resultHash=new n(t._baseHash[0])}reset(){const e=this;e._resultHash=new e._hash(e._baseHash[0]),e._updated=!1}update(e){this._updated=!0,this._resultHash.update(e)}digest(){const e=this,t=e._resultHash.finalize(),n=new e._hash(e._baseHash[1]).update(t).finalize();return e.reset(),n}encrypt(e){if(this._updated)throw new s("encrypt on already updated hmac called!");return this.update(e),this.digest(e)}}},C="Invalid pasword",R=16,D={name:"PBKDF2"},I=t.assign({hash:{name:"HMAC"}},D),V=t.assign({iterations:1e3,hash:{name:"SHA-1"}},D),q=["deriveBits"],A=[8,12,16],B=[16,24,32],H=10,K=[0,0,0,0],x="undefined",W="function",P=typeof u!=x,U=P&&typeof u.subtle!=x,E=P&&typeof u.getRandomValues==W,L=P&&U&&typeof u.subtle.importKey==W,M=P&&U&&typeof u.subtle.deriveBits==W,j=v.bytes,F=class{constructor(e){const t=this;t._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],t._tables[0][0][0]||t._precompute();const n=t._tables[0][4],r=t._tables[1],a=e.length;let i,o,c,l=1;if(4!==a&&6!==a&&8!==a)throw new s("invalid aes key size");for(t._key=[o=e.slice(0),c=[]],i=a;4*a+28>i;i++){let e=o[i-1];(i%a==0||8===a&&i%a==4)&&(e=n[e>>>24]<<24^n[e>>16&255]<<16^n[e>>8&255]<<8^n[255&e],i%a==0&&(e=e<<8^e>>>24^l<<24,l=l<<1^283*(l>>7))),o[i]=o[i-a]^e}for(let e=0;i;e++,i--){const t=o[3&e?i:i-4];c[e]=4>=i||4>e?t:r[0][n[t>>>24]]^r[1][n[t>>16&255]]^r[2][n[t>>8&255]]^r[3][n[255&t]]}}encrypt(e){return this._crypt(e,0)}decrypt(e){return this._crypt(e,1)}_precompute(){const e=this._tables[0],t=this._tables[1],n=e[4],s=t[4],r=[],a=[];let i,o,c,l;for(let e=0;256>e;e++)a[(r[e]=e<<1^283*(e>>7))^e]=e;for(let h=i=0;!n[h];h^=o||1,i=a[i]||1){let a=i^i<<1^i<<2^i<<3^i<<4;a=a>>8^255&a^99,n[h]=a,s[a]=h,l=r[c=r[o=r[h]]];let u=16843009*l^65537*c^257*o^16843008*h,p=257*r[a]^16843008*a;for(let n=0;4>n;n++)e[n][h]=p=p<<24^p>>>8,t[n][a]=u=u<<24^u>>>8}for(let n=0;5>n;n++)e[n]=e[n].slice(0),t[n]=t[n].slice(0)}_crypt(e,t){if(4!==e.length)throw new s("invalid aes block size");const n=this._key[t],r=n.length/4-2,a=[0,0,0,0],i=this._tables[t],o=i[0],c=i[1],l=i[2],h=i[3],u=i[4];let p,f,d,g=e[0]^n[0],w=e[t?3:1]^n[1],y=e[2]^n[2],_=e[t?1:3]^n[3],m=4;for(let e=0;r>e;e++)p=o[g>>>24]^c[w>>16&255]^l[y>>8&255]^h[255&_]^n[m],f=o[w>>>24]^c[y>>16&255]^l[_>>8&255]^h[255&g]^n[m+1],d=o[y>>>24]^c[_>>16&255]^l[g>>8&255]^h[255&w]^n[m+2],_=o[_>>>24]^c[g>>16&255]^l[w>>8&255]^h[255&y]^n[m+3],m+=4,g=p,w=f,y=d;for(let e=0;4>e;e++)a[t?3&-e:e]=u[g>>>24]<<24^u[w>>16&255]<<16^u[y>>8&255]<<8^u[255&_]^n[m++],p=g,g=w,w=y,y=_,_=p;return a}},N=class{constructor(e,t){this._prf=e,this._initIv=t,this._iv=t}reset(){this._iv=this._initIv}update(e){return this.calculate(this._prf,e,this._iv)}incWord(e){if(255==(e>>24&255)){let t=e>>16&255,n=e>>8&255,s=255&e;255===t?(t=0,255===n?(n=0,255===s?s=0:++s):++n):++t,e=0,e+=t<<16,e+=n<<8,e+=s}else e+=1<<24;return e}incCounter(e){0===(e[0]=this.incWord(e[0]))&&(e[1]=this.incWord(e[1]))}calculate(e,t,n){let s;if(!(s=t.length))return[];const r=k.bitLength(t);for(let r=0;s>r;r+=4){this.incCounter(n);const s=e.encrypt(n);t[r]^=s[0],t[r+1]^=s[1],t[r+2]^=s[2],t[r+3]^=s[3]}return k.clamp(t,r)}},O=z.hmacSha1;class G extends f{constructor(n,a,i){let o;super({start(){t.assign(this,{ready:new l((e=>this.resolveReady=e)),password:n,signed:a,strength:i-1,pending:new r})},async transform(t,n){const a=this;if(a.password){const n=a.password;a.password=null;const r=Z(t,0,A[a.strength]+2);await(async(e,t,n)=>{await Q(e,n,Z(t,0,A[e.strength]));const r=Z(t,A[e.strength]),a=e.keys.passwordVerification;if(a[0]!=r[0]||a[1]!=r[1])throw new s(C)})(a,r,n),a.ctr=new N(new F(a.keys.key),e.from(K)),a.hmac=new O(a.keys.authentication),t=Z(t,A[a.strength]+2),a.resolveReady()}else await a.ready;const i=new r(t.length-H-(t.length-H)%R);n.enqueue(J(a,t,i,0,H,!0))},async flush(e){const t=this;await t.ready;const n=t.pending,s=Z(n,0,n.length-H),a=Z(n,n.length-H);let i=new r;if(s.length){const e=ee(j,s);t.hmac.update(e);const n=t.ctr.update(e);i=$(j,n)}if(o.valid=!0,t.signed){const e=Z($(j,t.hmac.digest()),0,H);for(let t=0;H>t;t++)e[t]!=a[t]&&(o.valid=!1)}e.enqueue(i)}}),o=this}}class X extends f{constructor(n,s){let a;super({start(){t.assign(this,{ready:new l((e=>this.resolveReady=e)),password:n,strength:s-1,pending:new r})},async transform(t,n){const s=this;let a=new r;if(s.password){const t=s.password;s.password=null,a=await(async(e,t)=>{const n=(s=new r(A[e.strength]),E?u.getRandomValues(s):T.getRandomValues(s));var s;return await Q(e,t,n),Y(n,e.keys.passwordVerification)})(s,t),s.ctr=new N(new F(s.keys.key),e.from(K)),s.hmac=new O(s.keys.authentication),s.resolveReady()}else await s.ready;const i=new r(a.length+t.length-t.length%R);i.set(a,0),n.enqueue(J(s,t,i,a.length,0))},async flush(e){const t=this;await t.ready;let n=new r;if(t.pending.length){const e=t.ctr.update(ee(j,t.pending));t.hmac.update(e),n=$(j,e)}a.signature=$(j,t.hmac.digest()).slice(0,H),e.enqueue(Y(n,a.signature))}}),a=this}}function J(e,t,n,s,a,i){const o=t.length-a;let c;for(e.pending.length&&(t=Y(e.pending,t),n=((e,t)=>{if(t&&t>e.length){const n=e;(e=new r(t)).set(n,0)}return e})(n,o-o%R)),c=0;o-R>=c;c+=R){const r=ee(j,Z(t,c,c+R));i&&e.hmac.update(r);const a=e.ctr.update(r);i||e.hmac.update(a),n.set($(j,a),c+s)}return e.pending=Z(t,c),n}async function Q(e,n,s){const a=(e=>{if(void 0===h){const t=new r((e=unescape(encodeURIComponent(e))).length);for(let n=0;n<t.length;n++)t[n]=e.charCodeAt(n);return t}return(new h).encode(e)})(n),i=await((e,t,n,s,r)=>L?u.subtle.importKey("raw",t,n,!1,r):z.importKey(t))(0,a,I,0,q),o=await(async(e,t,n)=>M?await u.subtle.deriveBits(e,t,n):z.pbkdf2(t,e.salt,V.iterations,n))(t.assign({salt:s},V),i,8*(2*B[e.strength]+2)),c=new r(o);e.keys={key:ee(j,Z(c,0,B[e.strength])),authentication:ee(j,Z(c,B[e.strength],2*B[e.strength])),passwordVerification:Z(c,2*B[e.strength])}}function Y(e,t){let n=e;return e.length+t.length&&(n=new r(e.length+t.length),n.set(e,0),n.set(t,e.length)),n}function Z(e,t,n){return e.subarray(t,n)}function $(e,t){return e.fromBits(t)}function ee(e,t){return e.toBits(t)}class te extends f{constructor(e,n){let r;super({start(){t.assign(this,{password:e,passwordVerification:n}),ae(this,e)},transform(e,t){const n=this;if(n.password){const t=se(n,e.subarray(0,12));if(n.password=null,t[11]!=n.passwordVerification)throw new s(C);e=e.subarray(12)}t.enqueue(se(n,e))},flush(){r.valid=!0}}),r=this}}class ne extends f{constructor(e,n){super({start(){t.assign(this,{password:e,passwordVerification:n}),ae(this,e)},transform(e,t){const n=this;let s,a;if(n.password){n.password=null;const t=u.getRandomValues(new r(12));t[11]=n.passwordVerification,s=new r(e.length+t.length),s.set(re(n,t),0),a=12}else s=new r(e.length),a=0;s.set(re(n,e),a),t.enqueue(s)},flush(){}})}}function se(e,t){const n=new r(t.length);for(let s=0;s<t.length;s++)n[s]=oe(e)^t[s],ie(e,n[s]);return n}function re(e,t){const n=new r(t.length);for(let s=0;s<t.length;s++)n[s]=oe(e)^t[s],ie(e,t[s]);return n}function ae(e,t){e.keys=[305419896,591751049,878082192],e.crcKey0=new m(e.keys[0]),e.crcKey2=new m(e.keys[2]);for(let n=0;n<t.length;n++)ie(e,t.charCodeAt(n))}function ie(e,t){e.crcKey0.append([t]),e.keys[0]=~e.crcKey0.get(),e.keys[1]=le(e.keys[1]+ce(e.keys[0])),e.keys[1]=le(n.imul(e.keys[1],134775813)+1),e.crcKey2.append([e.keys[1]>>>24]),e.keys[2]=~e.crcKey2.get()}function oe(e){const t=2|e.keys[2];return ce(n.imul(t,1^t)>>>8)}function ce(e){return 255&e}function le(e){return 4294967295&e}class he extends f{constructor(e,t){let n;super({start(){n=new e(t)},transform(e,t){e=n.append(e),t.enqueue(e)},flush(e){const t=n.flush();t&&e.enqueue(t)}})}}const ue="Invalid signature",pe="deflate-raw",fe="undefined",de=typeof w==fe,ge=typeof y==fe;let we=!0,ye=!0;class _e extends f{constructor(e,t,{chunkSize:n},...s){super({},...s);const{compressed:r,encrypted:a,useCompressionStream:i,password:o,passwordVerification:l,encryptionStrength:h,zipCrypto:u,signed:p}=t,f=this;let d,g,y=ke(super.readable);if(a&&!u||!p||([y,d]=y.tee(),d=d.pipeThrough(new b)),r)if(void 0!==i&&!i||de&&!ye)y=be(e,y,n);else try{y=y.pipeThrough(new w(pe))}catch(t){ye=!1,y=be(e,y,n)}a&&(u?y=y.pipeThrough(new ne(o,l)):(g=new X(o,h),y=y.pipeThrough(g))),ve(f,y,(async()=>{let e;a&&!u&&(e=g.signature),a&&!u||!p||(e=await d.getReader().read(),e=new c(e.value.buffer).getUint32(0)),f.signature=e}))}}class me extends f{constructor(e,t,{chunkSize:n},...r){super({},...r);const{zipCrypto:a,encrypted:i,password:o,passwordVerification:l,signed:h,encryptionStrength:u,compressed:p,useCompressionStream:f}=t;let d,g,w=ke(super.readable);if(i&&(a?w=w.pipeThrough(new te(o,l)):(g=new G(o,h,u),w=w.pipeThrough(g))),p)if(void 0!==f&&!f||ge&&!we)w=be(e,w,n);else try{w=w.pipeThrough(new y(pe))}catch(t){we=!1,w=be(e,w,n)}i&&!a||!h||([w,d]=w.tee(),d=d.pipeThrough(new b)),ve(this,w,(async()=>{if(i&&!a&&!g.valid)throw new s(ue);if((!i||a)&&h){const e=await d.getReader().read();if(e!=new c(e.value.buffer).getUint32(0,!1))throw new s(ue)}}))}}function be(e,t,n){return t.pipeThrough(new he(e,{chunkSize:n}))}function ke(e){return e.pipeThrough(new f({transform(e,t){e&&e.length&&t.enqueue(e)}}))}function ve(e,n,s){e.length=0,n=n.pipeThrough(new f({transform(t,n){t&&t.length&&(e.length+=t.length,n.enqueue(t))},flush:s})),t.defineProperty(e,"readable",{get:()=>n})}const Se="deflate",Te="inflate",ze="data";class Ce{constructor(e,t,n,s,r){const{codecType:a}=s;async function i(a){const i=new a(e,s,r);await t.pipeThrough(i).pipeTo(n,{preventClose:!0});const{length:o,signature:c}=i;return{length:o,signature:c}}a.startsWith(Se)?this.run=()=>i(_e):a.startsWith(Te)&&(this.run=()=>i(me))}}const Re=new Map;let De,Ie=0;async function Ve(e){try{const{options:t,scripts:n,config:s}=e,{codecType:r}=t;let a;n&&n.length&&importScripts.apply(void 0,n),self.initCodec&&self.initCodec(),r.startsWith(Se)?a=self.Deflate:r.startsWith(Te)&&(a=self.Inflate);const i={highWaterMark:1,size:()=>s.chunkSize},o=new d({async pull(e){let t=new l(((e,t)=>Re.set(Ie,{resolve:e,reject:t})));qe({type:"pull",messageId:Ie}),Ie=(Ie+1)%Number.MAX_SAFE_INTEGER;const{value:n,done:s}=await t;e.enqueue(n),s&&e.close()}},i),c=new g({write(e){qe({type:ze,data:e})}},i);De=new Ce(a,o,c,t,s),qe({type:"close",result:await De.run()})}catch(e){const{message:t,stack:n}=e;p({error:{message:t,stack:n}})}}function qe(e){if(e.data){let{data:t}=e;if(t&&t.length)try{t.length!=t.buffer.byteLength&&(t=new r(t)),e.data=t.buffer,p(e,[e.data])}catch(t){p(e)}else p(e)}else p(e)}function Ae(e,n,s){return class{constructor(a){const i=this;t.hasOwn(a,"level")&&void 0===a.level&&delete a.level,i.codec=new e(t.assign({},n,a)),s(i.codec,(e=>{if(i.pendingData){const{pendingData:t}=i;i.pendingData=new r(t.length+e.length),t.set(t,0),t.set(e,t.length)}else i.pendingData=new r(e)}))}append(e){return this.codec.push(e),a(this)}flush(){return this.codec.push(new r,!0),a(this)}};function a(e){if(e.pendingData){const t=e.pendingData;return e.pendingData=null,t}return new r}}addEventListener("message",(async e=>{const t=e.data,{type:n,messageId:s,data:a,done:i}=t;try{if("start"==n&&Ve(t),n==ze){const{resolve:e}=Re.get(s);Re.delete(s),e({value:new r(a),done:i})}}catch(e){p({error:{message:e.message,stack:e.stack}})}})),self.initCodec=()=>{const{Deflate:e,Inflate:t}=((e,t={},n)=>({Deflate:Ae(e.Deflate,t.deflate,n),Inflate:Ae(e.Inflate,t.inflate,n)}))(fflate,void 0,((e,t)=>e.ondata=t));self.Deflate=e,self.Inflate=t}}();
@@ -1 +1 @@
1
- !function(){"use strict";const{Array:e,Object:t,Math:n,Error:s,Uint8Array:r,Uint16Array:a,Uint32Array:i,Int32Array:o,DataView:c,Promise:l,TextEncoder:h,crypto:u,postMessage:p,TransformStream:f,ReadableStream:d,WritableStream:g,CompressionStream:w,DecompressionStream:y}=globalThis,_=[];for(let e=0;256>e;e++){let t=e;for(let e=0;8>e;e++)1&t?t=t>>>1^3988292384:t>>>=1;_[e]=t}class m{constructor(e){this.crc=e||-1}append(e){let t=0|this.crc;for(let n=0,s=0|e.length;s>n;n++)t=t>>>8^_[255&(t^e[n])];this.crc=t}get(){return~this.crc}}class b extends f{constructor(){super({start(){this.crc32=new m},transform(e){this.crc32.append(e)},flush(e){const t=new r(4);new c(t.buffer).setUint32(0,this.crc32.get()),e.enqueue(t)}})}}const k={concat(e,t){if(0===e.length||0===t.length)return e.concat(t);const n=e[e.length-1],s=k.getPartial(n);return 32===s?e.concat(t):k._shiftRight(t,s,0|n,e.slice(0,e.length-1))},bitLength(e){const t=e.length;if(0===t)return 0;const n=e[t-1];return 32*(t-1)+k.getPartial(n)},clamp(e,t){if(32*e.length<t)return e;const s=(e=e.slice(0,n.ceil(t/32))).length;return t&=31,s>0&&t&&(e[s-1]=k.partial(t,e[s-1]&2147483648>>t-1,1)),e},partial:(e,t,n)=>32===e?t:(n?0|t:t<<32-e)+1099511627776*e,getPartial:e=>n.round(e/1099511627776)||32,_shiftRight(e,t,n,s){for(void 0===s&&(s=[]);t>=32;t-=32)s.push(n),n=0;if(0===t)return s.concat(e);for(let r=0;r<e.length;r++)s.push(n|e[r]>>>t),n=e[r]<<32-t;const r=e.length?e[e.length-1]:0,a=k.getPartial(r);return s.push(k.partial(t+a&31,t+a>32?n:s.pop(),1)),s}},v={bytes:{fromBits(e){const t=k.bitLength(e)/8,n=new r(t);let s;for(let r=0;t>r;r++)0==(3&r)&&(s=e[r/4]),n[r]=s>>>24,s<<=8;return n},toBits(e){const t=[];let n,s=0;for(n=0;n<e.length;n++)s=s<<8|e[n],3==(3&n)&&(t.push(s),s=0);return 3&n&&t.push(k.partial(8*(3&n),s)),t}}},S={sha1:function(e){e?(this._h=e._h.slice(0),this._buffer=e._buffer.slice(0),this._length=e._length):this.reset()}};S.sha1.prototype={blockSize:512,reset(){const e=this;return e._h=this._init.slice(0),e._buffer=[],e._length=0,e},update(e){const t=this;"string"==typeof e&&(e=v.utf8String.toBits(e));const n=t._buffer=k.concat(t._buffer,e),r=t._length,a=t._length=r+k.bitLength(e);if(a>9007199254740991)throw new s("Cannot hash more than 2^53 - 1 bits");const o=new i(n);let c=0;for(let e=t.blockSize+r-(t.blockSize+r&t.blockSize-1);a>=e;e+=t.blockSize)t._block(o.subarray(16*c,16*(c+1))),c+=1;return n.splice(0,16*c),t},finalize(){const e=this;let t=e._buffer;const s=e._h;t=k.concat(t,[k.partial(1,1)]);for(let e=t.length+2;15&e;e++)t.push(0);for(t.push(n.floor(e._length/4294967296)),t.push(0|e._length);t.length;)e._block(t.splice(0,16));return e.reset(),s},_init:[1732584193,4023233417,2562383102,271733878,3285377520],_key:[1518500249,1859775393,2400959708,3395469782],_f:(e,t,n,s)=>e>19?e>39?e>59?e>79?void 0:t^n^s:t&n|t&s|n&s:t^n^s:t&n|~t&s,_S:(e,t)=>t<<e|t>>>32-e,_block(t){const s=this,r=s._h,a=e(80);for(let e=0;16>e;e++)a[e]=t[e];let i=r[0],o=r[1],c=r[2],l=r[3],h=r[4];for(let e=0;79>=e;e++){16>e||(a[e]=s._S(1,a[e-3]^a[e-8]^a[e-14]^a[e-16]));const t=s._S(5,i)+s._f(e,o,c,l)+h+a[e]+s._key[n.floor(e/20)]|0;h=l,l=c,c=s._S(30,o),o=i,i=t}r[0]=r[0]+i|0,r[1]=r[1]+o|0,r[2]=r[2]+c|0,r[3]=r[3]+l|0,r[4]=r[4]+h|0}};const T={getRandomValues(e){const t=new i(e.buffer),s=e=>{let t=987654321;const s=4294967295;return()=>(t=36969*(65535&t)+(t>>16)&s,(((t<<16)+(e=18e3*(65535&e)+(e>>16)&s)&s)/4294967296+.5)*(n.random()>.5?1:-1))};for(let r,a=0;a<e.length;a+=4){const e=s(4294967296*(r||n.random()));r=987654071*e(),t[a/4]=4294967296*e()|0}return e}},z={importKey:e=>new z.hmacSha1(v.bytes.toBits(e)),pbkdf2(e,t,n,r){if(n=n||1e4,0>r||0>n)throw new s("invalid params to pbkdf2");const a=1+(r>>5)<<2;let i,o,l,h,u;const p=new ArrayBuffer(a),f=new c(p);let d=0;const g=k;for(t=v.bytes.toBits(t),u=1;(a||1)>d;u++){for(i=o=e.encrypt(g.concat(t,[u])),l=1;n>l;l++)for(o=e.encrypt(o),h=0;h<o.length;h++)i[h]^=o[h];for(l=0;(a||1)>d&&l<i.length;l++)f.setInt32(d,i[l]),d+=4}return p.slice(0,r/8)},hmacSha1:class{constructor(e){const t=this,n=t._hash=S.sha1,s=[[],[]],r=n.prototype.blockSize/32;t._baseHash=[new n,new n],e.length>r&&(e=n.hash(e));for(let t=0;r>t;t++)s[0][t]=909522486^e[t],s[1][t]=1549556828^e[t];t._baseHash[0].update(s[0]),t._baseHash[1].update(s[1]),t._resultHash=new n(t._baseHash[0])}reset(){const e=this;e._resultHash=new e._hash(e._baseHash[0]),e._updated=!1}update(e){this._updated=!0,this._resultHash.update(e)}digest(){const e=this,t=e._resultHash.finalize(),n=new e._hash(e._baseHash[1]).update(t).finalize();return e.reset(),n}encrypt(e){if(this._updated)throw new s("encrypt on already updated hmac called!");return this.update(e),this.digest(e)}}},D="Invalid pasword",C=16,R={name:"PBKDF2"},I=t.assign({hash:{name:"HMAC"}},R),V=t.assign({iterations:1e3,hash:{name:"SHA-1"}},R),q=["deriveBits"],A=[8,12,16],B=[16,24,32],H=10,K=[0,0,0,0],x="undefined",W="function",P=typeof u!=x,U=P&&typeof u.subtle!=x,E=P&&typeof u.getRandomValues==W,L=P&&U&&typeof u.subtle.importKey==W,M=P&&U&&typeof u.subtle.deriveBits==W,j=v.bytes,F=class{constructor(e){const t=this;t._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],t._tables[0][0][0]||t._precompute();const n=t._tables[0][4],r=t._tables[1],a=e.length;let i,o,c,l=1;if(4!==a&&6!==a&&8!==a)throw new s("invalid aes key size");for(t._key=[o=e.slice(0),c=[]],i=a;4*a+28>i;i++){let e=o[i-1];(i%a==0||8===a&&i%a==4)&&(e=n[e>>>24]<<24^n[e>>16&255]<<16^n[e>>8&255]<<8^n[255&e],i%a==0&&(e=e<<8^e>>>24^l<<24,l=l<<1^283*(l>>7))),o[i]=o[i-a]^e}for(let e=0;i;e++,i--){const t=o[3&e?i:i-4];c[e]=4>=i||4>e?t:r[0][n[t>>>24]]^r[1][n[t>>16&255]]^r[2][n[t>>8&255]]^r[3][n[255&t]]}}encrypt(e){return this._crypt(e,0)}decrypt(e){return this._crypt(e,1)}_precompute(){const e=this._tables[0],t=this._tables[1],n=e[4],s=t[4],r=[],a=[];let i,o,c,l;for(let e=0;256>e;e++)a[(r[e]=e<<1^283*(e>>7))^e]=e;for(let h=i=0;!n[h];h^=o||1,i=a[i]||1){let a=i^i<<1^i<<2^i<<3^i<<4;a=a>>8^255&a^99,n[h]=a,s[a]=h,l=r[c=r[o=r[h]]];let u=16843009*l^65537*c^257*o^16843008*h,p=257*r[a]^16843008*a;for(let n=0;4>n;n++)e[n][h]=p=p<<24^p>>>8,t[n][a]=u=u<<24^u>>>8}for(let n=0;5>n;n++)e[n]=e[n].slice(0),t[n]=t[n].slice(0)}_crypt(e,t){if(4!==e.length)throw new s("invalid aes block size");const n=this._key[t],r=n.length/4-2,a=[0,0,0,0],i=this._tables[t],o=i[0],c=i[1],l=i[2],h=i[3],u=i[4];let p,f,d,g=e[0]^n[0],w=e[t?3:1]^n[1],y=e[2]^n[2],_=e[t?1:3]^n[3],m=4;for(let e=0;r>e;e++)p=o[g>>>24]^c[w>>16&255]^l[y>>8&255]^h[255&_]^n[m],f=o[w>>>24]^c[y>>16&255]^l[_>>8&255]^h[255&g]^n[m+1],d=o[y>>>24]^c[_>>16&255]^l[g>>8&255]^h[255&w]^n[m+2],_=o[_>>>24]^c[g>>16&255]^l[w>>8&255]^h[255&y]^n[m+3],m+=4,g=p,w=f,y=d;for(let e=0;4>e;e++)a[t?3&-e:e]=u[g>>>24]<<24^u[w>>16&255]<<16^u[y>>8&255]<<8^u[255&_]^n[m++],p=g,g=w,w=y,y=_,_=p;return a}},N=class{constructor(e,t){this._prf=e,this._initIv=t,this._iv=t}reset(){this._iv=this._initIv}update(e){return this.calculate(this._prf,e,this._iv)}incWord(e){if(255==(e>>24&255)){let t=e>>16&255,n=e>>8&255,s=255&e;255===t?(t=0,255===n?(n=0,255===s?s=0:++s):++n):++t,e=0,e+=t<<16,e+=n<<8,e+=s}else e+=1<<24;return e}incCounter(e){0===(e[0]=this.incWord(e[0]))&&(e[1]=this.incWord(e[1]))}calculate(e,t,n){let s;if(!(s=t.length))return[];const r=k.bitLength(t);for(let r=0;s>r;r+=4){this.incCounter(n);const s=e.encrypt(n);t[r]^=s[0],t[r+1]^=s[1],t[r+2]^=s[2],t[r+3]^=s[3]}return k.clamp(t,r)}},O=z.hmacSha1;class G extends f{constructor(n,a,i){let o;super({start(){t.assign(this,{ready:new l((e=>this.resolveReady=e)),password:n,signed:a,strength:i-1,pending:new r})},async transform(t,n){const a=this;if(a.password){const n=a.password;a.password=null;const r=Z(t,0,A[a.strength]+2);await(async(e,t,n)=>{await Q(e,n,Z(t,0,A[e.strength]));const r=Z(t,A[e.strength]),a=e.keys.passwordVerification;if(a[0]!=r[0]||a[1]!=r[1])throw new s(D)})(a,r,n),a.ctr=new N(new F(a.keys.key),e.from(K)),a.hmac=new O(a.keys.authentication),t=Z(t,A[a.strength]+2),a.resolveReady()}else await a.ready;const i=new r(t.length-H-(t.length-H)%C);n.enqueue(J(a,t,i,0,H,!0))},async flush(e){const t=this;await t.ready;const n=t.pending,s=Z(n,0,n.length-H),a=Z(n,n.length-H);let i=new r;if(s.length){const e=ee(j,s);t.hmac.update(e);const n=t.ctr.update(e);i=$(j,n)}if(o.valid=!0,t.signed){const e=Z($(j,t.hmac.digest()),0,H);for(let t=0;H>t;t++)e[t]!=a[t]&&(o.valid=!1)}e.enqueue(i)}}),o=this}}class X extends f{constructor(n,s){let a;super({start(){t.assign(this,{ready:new l((e=>this.resolveReady=e)),password:n,strength:s-1,pending:new r})},async transform(t,n){const s=this;let a=new r;if(s.password){const t=s.password;s.password=null,a=await(async(e,t)=>{const n=(s=new r(A[e.strength]),E?u.getRandomValues(s):T.getRandomValues(s));var s;return await Q(e,t,n),Y(n,e.keys.passwordVerification)})(s,t),s.ctr=new N(new F(s.keys.key),e.from(K)),s.hmac=new O(s.keys.authentication),s.resolveReady()}else await s.ready;const i=new r(a.length+t.length-t.length%C);i.set(a,0),n.enqueue(J(s,t,i,a.length,0))},async flush(e){const t=this;await t.ready;let n=new r;if(t.pending.length){const e=t.ctr.update(ee(j,t.pending));t.hmac.update(e),n=$(j,e)}a.signature=$(j,t.hmac.digest()).slice(0,H),e.enqueue(Y(n,a.signature))}}),a=this}}function J(e,t,n,s,a,i){const o=t.length-a;let c;for(e.pending.length&&(t=Y(e.pending,t),n=((e,t)=>{if(t&&t>e.length){const n=e;(e=new r(t)).set(n,0)}return e})(n,o-o%C)),c=0;o-C>=c;c+=C){const r=ee(j,Z(t,c,c+C));i&&e.hmac.update(r);const a=e.ctr.update(r);i||e.hmac.update(a),n.set($(j,a),c+s)}return e.pending=Z(t,c),n}async function Q(e,n,s){const a=(e=>{if(void 0===h){const t=new r((e=unescape(encodeURIComponent(e))).length);for(let n=0;n<t.length;n++)t[n]=e.charCodeAt(n);return t}return(new h).encode(e)})(n),i=await((e,t,n,s,r)=>L?u.subtle.importKey("raw",t,n,!1,r):z.importKey(t))(0,a,I,0,q),o=await(async(e,t,n)=>M?await u.subtle.deriveBits(e,t,n):z.pbkdf2(t,e.salt,V.iterations,n))(t.assign({salt:s},V),i,8*(2*B[e.strength]+2)),c=new r(o);e.keys={key:ee(j,Z(c,0,B[e.strength])),authentication:ee(j,Z(c,B[e.strength],2*B[e.strength])),passwordVerification:Z(c,2*B[e.strength])}}function Y(e,t){let n=e;return e.length+t.length&&(n=new r(e.length+t.length),n.set(e,0),n.set(t,e.length)),n}function Z(e,t,n){return e.subarray(t,n)}function $(e,t){return e.fromBits(t)}function ee(e,t){return e.toBits(t)}class te extends f{constructor(e,n){let r;super({start(){t.assign(this,{password:e,passwordVerification:n}),ae(this,e)},transform(e,t){const n=this;if(n.password){const t=se(n,e.subarray(0,12));if(n.password=null,t[11]!=n.passwordVerification)throw new s(D);e=e.subarray(12)}t.enqueue(se(n,e))},flush(){r.valid=!0}}),r=this}}class ne extends f{constructor(e,n){super({start(){t.assign(this,{password:e,passwordVerification:n}),ae(this,e)},transform(e,t){const n=this;let s,a;if(n.password){n.password=null;const t=u.getRandomValues(new r(12));t[11]=n.passwordVerification,s=new r(e.length+t.length),s.set(re(n,t),0),a=12}else s=new r(e.length),a=0;s.set(re(n,e),a),t.enqueue(s)},flush(){}})}}function se(e,t){const n=new r(t.length);for(let s=0;s<t.length;s++)n[s]=oe(e)^t[s],ie(e,n[s]);return n}function re(e,t){const n=new r(t.length);for(let s=0;s<t.length;s++)n[s]=oe(e)^t[s],ie(e,t[s]);return n}function ae(e,t){e.keys=[305419896,591751049,878082192],e.crcKey0=new m(e.keys[0]),e.crcKey2=new m(e.keys[2]);for(let n=0;n<t.length;n++)ie(e,t.charCodeAt(n))}function ie(e,t){e.crcKey0.append([t]),e.keys[0]=~e.crcKey0.get(),e.keys[1]=le(e.keys[1]+ce(e.keys[0])),e.keys[1]=le(n.imul(e.keys[1],134775813)+1),e.crcKey2.append([e.keys[1]>>>24]),e.keys[2]=~e.crcKey2.get()}function oe(e){const t=2|e.keys[2];return ce(n.imul(t,1^t)>>>8)}function ce(e){return 255&e}function le(e){return 4294967295&e}class he extends f{constructor(e,t){let n;super({start(){n=new e(t)},transform(e,t){e=n.append(e),t.enqueue(e)},flush(e){const t=n.flush();t&&e.enqueue(t)}})}}const ue="Invalid signature",pe="deflate-raw",fe="undefined",de=typeof w==fe,ge=typeof y==fe;let we=!0,ye=!0;class _e extends f{constructor(e,t,{chunkSize:n},...s){super({},...s);const{compressed:r,encrypted:a,useCompressionStream:i,password:o,passwordVerification:l,encryptionStrength:h,zipCrypto:u,signed:p}=t,f=this;let d,g,y=ke(super.readable);if(a&&!u||!p||([y,d]=y.tee(),d=d.pipeThrough(new b)),r)if(void 0!==i&&!i||de&&!ye)y=be(e,y,n);else try{y=y.pipeThrough(new w(pe))}catch(t){ye=!1,y=be(e,y,n)}a&&(u?y=y.pipeThrough(new ne(o,l)):(g=new X(o,h),y=y.pipeThrough(g))),ve(f,y,(async()=>{let e;a&&!u&&(e=g.signature),a&&!u||!p||(e=await d.getReader().read(),e=new c(e.value.buffer).getUint32(0)),f.signature=e}))}}class me extends f{constructor(e,t,{chunkSize:n},...r){super({},...r);const{zipCrypto:a,encrypted:i,password:o,passwordVerification:l,signed:h,encryptionStrength:u,compressed:p,useCompressionStream:f}=t;let d,g,w=ke(super.readable);if(i&&(a?w=w.pipeThrough(new te(o,l)):(g=new G(o,h,u),w=w.pipeThrough(g))),p)if(void 0!==f&&!f||ge&&!we)w=be(e,w,n);else try{w=w.pipeThrough(new y(pe))}catch(t){we=!1,w=be(e,w,n)}i&&!a||!h||([w,d]=w.tee(),d=d.pipeThrough(new b)),ve(this,w,(async()=>{if(i&&!a&&!g.valid)throw new s(ue);if((!i||a)&&h){const e=await d.getReader().read();if(e!=new c(e.value.buffer).getUint32(0,!1))throw new s(ue)}}))}}function be(e,t,n){return t.pipeThrough(new he(e,{chunkSize:n}))}function ke(e){return e.pipeThrough(new f({transform(e,t){e&&e.length&&t.enqueue(e)}}))}function ve(e,n,s){e.length=0,n=n.pipeThrough(new f({transform(t,n){t&&t.length&&(e.length+=t.length,n.enqueue(t))},flush:s})),t.defineProperty(e,"readable",{get:()=>n})}const Se="deflate",Te="inflate",ze="data";class De{constructor(e,t,n,s,r){const{codecType:a}=s;async function i(a){const i=new a(e,s,r);await t.pipeThrough(i).pipeTo(n,{preventClose:!0});const{length:o,signature:c}=i;return{length:o,signature:c}}a.startsWith(Se)?this.run=()=>i(_e):a.startsWith(Te)&&(this.run=()=>i(me))}}const Ce=new Map;let Re,Ie=0;async function Ve(e){try{const{options:t,scripts:n,config:s}=e,{codecType:r}=t;let a;n&&n.length&&importScripts.apply(void 0,n),self.initCodec&&self.initCodec(),r.startsWith(Se)?a=self.Deflate:r.startsWith(Te)&&(a=self.Inflate);const i={highWaterMark:1,size:()=>s.chunkSize},o=new d({async pull(e){let t=new l(((e,t)=>Ce.set(Ie,{resolve:e,reject:t})));qe({type:"pull",messageId:Ie}),Ie=(Ie+1)%Number.MAX_SAFE_INTEGER;const{value:n,done:s}=await t;e.enqueue(n),s&&e.close()}},i),c=new g({write(e){qe({type:ze,data:e})}},i);Re=new De(a,o,c,t,s),qe({type:"close",result:await Re.run()})}catch(e){const{message:t,stack:n}=e;p({error:{message:t,stack:n}})}}function qe(e){if(e.data){let{data:t}=e;if(t&&t.length)try{t.length!=t.buffer.byteLength&&(t=new r(t)),e.data=t.buffer,p(e,[e.data])}catch(t){p(e)}else p(e)}else p(e)}function Ae(e,n,s){return class{constructor(a){const i=this;a.hasOwnProperty("level")&&void 0===a.level&&delete a.level,i.codec=new e(t.assign({},n,a)),s(i.codec,(e=>{if(i.pendingData){const{pendingData:t}=i;i.pendingData=new r(t.length+e.length),i.pendingData.set(t,0),i.pendingData.set(e,t.length)}else i.pendingData=new r(e)}))}append(e){return this.codec.push(e),a(this)}flush(){return this.codec.push(new r,!0),a(this)}};function a(e){if(e.pendingData){const t=e.pendingData;return e.pendingData=null,t}return new r}}addEventListener("message",(async e=>{const t=e.data,{type:n,messageId:s,data:a,done:i}=t;try{if("start"==n&&Ve(t),n==ze){const{resolve:e}=Ce.get(s);Ce.delete(s),e({value:new r(a),done:i})}}catch(e){p({error:{message:e.message,stack:e.stack}})}})),self.initCodec=()=>{const{Deflate:e,Inflate:t}=((e,t={},n)=>({Deflate:Ae(e.Deflate,t.deflate,n),Inflate:Ae(e.Inflate,t.inflate,n)}))(pako,{deflate:{raw:!0},inflate:{raw:!0}},((e,t)=>e.onData=t));self.Deflate=e,self.Inflate=t}}();
1
+ !function(){"use strict";const{Array:e,Object:t,Math:n,Error:s,Uint8Array:r,Uint16Array:a,Uint32Array:i,Int32Array:o,DataView:c,Promise:l,TextEncoder:h,crypto:u,postMessage:p,TransformStream:f,ReadableStream:d,WritableStream:g,CompressionStream:w,DecompressionStream:y}=globalThis,_=[];for(let e=0;256>e;e++){let t=e;for(let e=0;8>e;e++)1&t?t=t>>>1^3988292384:t>>>=1;_[e]=t}class m{constructor(e){this.crc=e||-1}append(e){let t=0|this.crc;for(let n=0,s=0|e.length;s>n;n++)t=t>>>8^_[255&(t^e[n])];this.crc=t}get(){return~this.crc}}class b extends f{constructor(){super({start(){this.crc32=new m},transform(e){this.crc32.append(e)},flush(e){const t=new r(4);new c(t.buffer).setUint32(0,this.crc32.get()),e.enqueue(t)}})}}const k={concat(e,t){if(0===e.length||0===t.length)return e.concat(t);const n=e[e.length-1],s=k.getPartial(n);return 32===s?e.concat(t):k._shiftRight(t,s,0|n,e.slice(0,e.length-1))},bitLength(e){const t=e.length;if(0===t)return 0;const n=e[t-1];return 32*(t-1)+k.getPartial(n)},clamp(e,t){if(32*e.length<t)return e;const s=(e=e.slice(0,n.ceil(t/32))).length;return t&=31,s>0&&t&&(e[s-1]=k.partial(t,e[s-1]&2147483648>>t-1,1)),e},partial:(e,t,n)=>32===e?t:(n?0|t:t<<32-e)+1099511627776*e,getPartial:e=>n.round(e/1099511627776)||32,_shiftRight(e,t,n,s){for(void 0===s&&(s=[]);t>=32;t-=32)s.push(n),n=0;if(0===t)return s.concat(e);for(let r=0;r<e.length;r++)s.push(n|e[r]>>>t),n=e[r]<<32-t;const r=e.length?e[e.length-1]:0,a=k.getPartial(r);return s.push(k.partial(t+a&31,t+a>32?n:s.pop(),1)),s}},v={bytes:{fromBits(e){const t=k.bitLength(e)/8,n=new r(t);let s;for(let r=0;t>r;r++)0==(3&r)&&(s=e[r/4]),n[r]=s>>>24,s<<=8;return n},toBits(e){const t=[];let n,s=0;for(n=0;n<e.length;n++)s=s<<8|e[n],3==(3&n)&&(t.push(s),s=0);return 3&n&&t.push(k.partial(8*(3&n),s)),t}}},S={sha1:function(e){e?(this._h=e._h.slice(0),this._buffer=e._buffer.slice(0),this._length=e._length):this.reset()}};S.sha1.prototype={blockSize:512,reset(){const e=this;return e._h=this._init.slice(0),e._buffer=[],e._length=0,e},update(e){const t=this;"string"==typeof e&&(e=v.utf8String.toBits(e));const n=t._buffer=k.concat(t._buffer,e),r=t._length,a=t._length=r+k.bitLength(e);if(a>9007199254740991)throw new s("Cannot hash more than 2^53 - 1 bits");const o=new i(n);let c=0;for(let e=t.blockSize+r-(t.blockSize+r&t.blockSize-1);a>=e;e+=t.blockSize)t._block(o.subarray(16*c,16*(c+1))),c+=1;return n.splice(0,16*c),t},finalize(){const e=this;let t=e._buffer;const s=e._h;t=k.concat(t,[k.partial(1,1)]);for(let e=t.length+2;15&e;e++)t.push(0);for(t.push(n.floor(e._length/4294967296)),t.push(0|e._length);t.length;)e._block(t.splice(0,16));return e.reset(),s},_init:[1732584193,4023233417,2562383102,271733878,3285377520],_key:[1518500249,1859775393,2400959708,3395469782],_f:(e,t,n,s)=>e>19?e>39?e>59?e>79?void 0:t^n^s:t&n|t&s|n&s:t^n^s:t&n|~t&s,_S:(e,t)=>t<<e|t>>>32-e,_block(t){const s=this,r=s._h,a=e(80);for(let e=0;16>e;e++)a[e]=t[e];let i=r[0],o=r[1],c=r[2],l=r[3],h=r[4];for(let e=0;79>=e;e++){16>e||(a[e]=s._S(1,a[e-3]^a[e-8]^a[e-14]^a[e-16]));const t=s._S(5,i)+s._f(e,o,c,l)+h+a[e]+s._key[n.floor(e/20)]|0;h=l,l=c,c=s._S(30,o),o=i,i=t}r[0]=r[0]+i|0,r[1]=r[1]+o|0,r[2]=r[2]+c|0,r[3]=r[3]+l|0,r[4]=r[4]+h|0}};const T={getRandomValues(e){const t=new i(e.buffer),s=e=>{let t=987654321;const s=4294967295;return()=>(t=36969*(65535&t)+(t>>16)&s,(((t<<16)+(e=18e3*(65535&e)+(e>>16)&s)&s)/4294967296+.5)*(n.random()>.5?1:-1))};for(let r,a=0;a<e.length;a+=4){const e=s(4294967296*(r||n.random()));r=987654071*e(),t[a/4]=4294967296*e()|0}return e}},z={importKey:e=>new z.hmacSha1(v.bytes.toBits(e)),pbkdf2(e,t,n,r){if(n=n||1e4,0>r||0>n)throw new s("invalid params to pbkdf2");const a=1+(r>>5)<<2;let i,o,l,h,u;const p=new ArrayBuffer(a),f=new c(p);let d=0;const g=k;for(t=v.bytes.toBits(t),u=1;(a||1)>d;u++){for(i=o=e.encrypt(g.concat(t,[u])),l=1;n>l;l++)for(o=e.encrypt(o),h=0;h<o.length;h++)i[h]^=o[h];for(l=0;(a||1)>d&&l<i.length;l++)f.setInt32(d,i[l]),d+=4}return p.slice(0,r/8)},hmacSha1:class{constructor(e){const t=this,n=t._hash=S.sha1,s=[[],[]],r=n.prototype.blockSize/32;t._baseHash=[new n,new n],e.length>r&&(e=n.hash(e));for(let t=0;r>t;t++)s[0][t]=909522486^e[t],s[1][t]=1549556828^e[t];t._baseHash[0].update(s[0]),t._baseHash[1].update(s[1]),t._resultHash=new n(t._baseHash[0])}reset(){const e=this;e._resultHash=new e._hash(e._baseHash[0]),e._updated=!1}update(e){this._updated=!0,this._resultHash.update(e)}digest(){const e=this,t=e._resultHash.finalize(),n=new e._hash(e._baseHash[1]).update(t).finalize();return e.reset(),n}encrypt(e){if(this._updated)throw new s("encrypt on already updated hmac called!");return this.update(e),this.digest(e)}}},C="Invalid pasword",D=16,R={name:"PBKDF2"},I=t.assign({hash:{name:"HMAC"}},R),V=t.assign({iterations:1e3,hash:{name:"SHA-1"}},R),q=["deriveBits"],A=[8,12,16],B=[16,24,32],H=10,K=[0,0,0,0],x="undefined",W="function",P=typeof u!=x,U=P&&typeof u.subtle!=x,E=P&&typeof u.getRandomValues==W,L=P&&U&&typeof u.subtle.importKey==W,M=P&&U&&typeof u.subtle.deriveBits==W,j=v.bytes,F=class{constructor(e){const t=this;t._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],t._tables[0][0][0]||t._precompute();const n=t._tables[0][4],r=t._tables[1],a=e.length;let i,o,c,l=1;if(4!==a&&6!==a&&8!==a)throw new s("invalid aes key size");for(t._key=[o=e.slice(0),c=[]],i=a;4*a+28>i;i++){let e=o[i-1];(i%a==0||8===a&&i%a==4)&&(e=n[e>>>24]<<24^n[e>>16&255]<<16^n[e>>8&255]<<8^n[255&e],i%a==0&&(e=e<<8^e>>>24^l<<24,l=l<<1^283*(l>>7))),o[i]=o[i-a]^e}for(let e=0;i;e++,i--){const t=o[3&e?i:i-4];c[e]=4>=i||4>e?t:r[0][n[t>>>24]]^r[1][n[t>>16&255]]^r[2][n[t>>8&255]]^r[3][n[255&t]]}}encrypt(e){return this._crypt(e,0)}decrypt(e){return this._crypt(e,1)}_precompute(){const e=this._tables[0],t=this._tables[1],n=e[4],s=t[4],r=[],a=[];let i,o,c,l;for(let e=0;256>e;e++)a[(r[e]=e<<1^283*(e>>7))^e]=e;for(let h=i=0;!n[h];h^=o||1,i=a[i]||1){let a=i^i<<1^i<<2^i<<3^i<<4;a=a>>8^255&a^99,n[h]=a,s[a]=h,l=r[c=r[o=r[h]]];let u=16843009*l^65537*c^257*o^16843008*h,p=257*r[a]^16843008*a;for(let n=0;4>n;n++)e[n][h]=p=p<<24^p>>>8,t[n][a]=u=u<<24^u>>>8}for(let n=0;5>n;n++)e[n]=e[n].slice(0),t[n]=t[n].slice(0)}_crypt(e,t){if(4!==e.length)throw new s("invalid aes block size");const n=this._key[t],r=n.length/4-2,a=[0,0,0,0],i=this._tables[t],o=i[0],c=i[1],l=i[2],h=i[3],u=i[4];let p,f,d,g=e[0]^n[0],w=e[t?3:1]^n[1],y=e[2]^n[2],_=e[t?1:3]^n[3],m=4;for(let e=0;r>e;e++)p=o[g>>>24]^c[w>>16&255]^l[y>>8&255]^h[255&_]^n[m],f=o[w>>>24]^c[y>>16&255]^l[_>>8&255]^h[255&g]^n[m+1],d=o[y>>>24]^c[_>>16&255]^l[g>>8&255]^h[255&w]^n[m+2],_=o[_>>>24]^c[g>>16&255]^l[w>>8&255]^h[255&y]^n[m+3],m+=4,g=p,w=f,y=d;for(let e=0;4>e;e++)a[t?3&-e:e]=u[g>>>24]<<24^u[w>>16&255]<<16^u[y>>8&255]<<8^u[255&_]^n[m++],p=g,g=w,w=y,y=_,_=p;return a}},N=class{constructor(e,t){this._prf=e,this._initIv=t,this._iv=t}reset(){this._iv=this._initIv}update(e){return this.calculate(this._prf,e,this._iv)}incWord(e){if(255==(e>>24&255)){let t=e>>16&255,n=e>>8&255,s=255&e;255===t?(t=0,255===n?(n=0,255===s?s=0:++s):++n):++t,e=0,e+=t<<16,e+=n<<8,e+=s}else e+=1<<24;return e}incCounter(e){0===(e[0]=this.incWord(e[0]))&&(e[1]=this.incWord(e[1]))}calculate(e,t,n){let s;if(!(s=t.length))return[];const r=k.bitLength(t);for(let r=0;s>r;r+=4){this.incCounter(n);const s=e.encrypt(n);t[r]^=s[0],t[r+1]^=s[1],t[r+2]^=s[2],t[r+3]^=s[3]}return k.clamp(t,r)}},O=z.hmacSha1;class G extends f{constructor(n,a,i){let o;super({start(){t.assign(this,{ready:new l((e=>this.resolveReady=e)),password:n,signed:a,strength:i-1,pending:new r})},async transform(t,n){const a=this;if(a.password){const n=a.password;a.password=null;const r=Z(t,0,A[a.strength]+2);await(async(e,t,n)=>{await Q(e,n,Z(t,0,A[e.strength]));const r=Z(t,A[e.strength]),a=e.keys.passwordVerification;if(a[0]!=r[0]||a[1]!=r[1])throw new s(C)})(a,r,n),a.ctr=new N(new F(a.keys.key),e.from(K)),a.hmac=new O(a.keys.authentication),t=Z(t,A[a.strength]+2),a.resolveReady()}else await a.ready;const i=new r(t.length-H-(t.length-H)%D);n.enqueue(J(a,t,i,0,H,!0))},async flush(e){const t=this;await t.ready;const n=t.pending,s=Z(n,0,n.length-H),a=Z(n,n.length-H);let i=new r;if(s.length){const e=ee(j,s);t.hmac.update(e);const n=t.ctr.update(e);i=$(j,n)}if(o.valid=!0,t.signed){const e=Z($(j,t.hmac.digest()),0,H);for(let t=0;H>t;t++)e[t]!=a[t]&&(o.valid=!1)}e.enqueue(i)}}),o=this}}class X extends f{constructor(n,s){let a;super({start(){t.assign(this,{ready:new l((e=>this.resolveReady=e)),password:n,strength:s-1,pending:new r})},async transform(t,n){const s=this;let a=new r;if(s.password){const t=s.password;s.password=null,a=await(async(e,t)=>{const n=(s=new r(A[e.strength]),E?u.getRandomValues(s):T.getRandomValues(s));var s;return await Q(e,t,n),Y(n,e.keys.passwordVerification)})(s,t),s.ctr=new N(new F(s.keys.key),e.from(K)),s.hmac=new O(s.keys.authentication),s.resolveReady()}else await s.ready;const i=new r(a.length+t.length-t.length%D);i.set(a,0),n.enqueue(J(s,t,i,a.length,0))},async flush(e){const t=this;await t.ready;let n=new r;if(t.pending.length){const e=t.ctr.update(ee(j,t.pending));t.hmac.update(e),n=$(j,e)}a.signature=$(j,t.hmac.digest()).slice(0,H),e.enqueue(Y(n,a.signature))}}),a=this}}function J(e,t,n,s,a,i){const o=t.length-a;let c;for(e.pending.length&&(t=Y(e.pending,t),n=((e,t)=>{if(t&&t>e.length){const n=e;(e=new r(t)).set(n,0)}return e})(n,o-o%D)),c=0;o-D>=c;c+=D){const r=ee(j,Z(t,c,c+D));i&&e.hmac.update(r);const a=e.ctr.update(r);i||e.hmac.update(a),n.set($(j,a),c+s)}return e.pending=Z(t,c),n}async function Q(e,n,s){const a=(e=>{if(void 0===h){const t=new r((e=unescape(encodeURIComponent(e))).length);for(let n=0;n<t.length;n++)t[n]=e.charCodeAt(n);return t}return(new h).encode(e)})(n),i=await((e,t,n,s,r)=>L?u.subtle.importKey("raw",t,n,!1,r):z.importKey(t))(0,a,I,0,q),o=await(async(e,t,n)=>M?await u.subtle.deriveBits(e,t,n):z.pbkdf2(t,e.salt,V.iterations,n))(t.assign({salt:s},V),i,8*(2*B[e.strength]+2)),c=new r(o);e.keys={key:ee(j,Z(c,0,B[e.strength])),authentication:ee(j,Z(c,B[e.strength],2*B[e.strength])),passwordVerification:Z(c,2*B[e.strength])}}function Y(e,t){let n=e;return e.length+t.length&&(n=new r(e.length+t.length),n.set(e,0),n.set(t,e.length)),n}function Z(e,t,n){return e.subarray(t,n)}function $(e,t){return e.fromBits(t)}function ee(e,t){return e.toBits(t)}class te extends f{constructor(e,n){let r;super({start(){t.assign(this,{password:e,passwordVerification:n}),ae(this,e)},transform(e,t){const n=this;if(n.password){const t=se(n,e.subarray(0,12));if(n.password=null,t[11]!=n.passwordVerification)throw new s(C);e=e.subarray(12)}t.enqueue(se(n,e))},flush(){r.valid=!0}}),r=this}}class ne extends f{constructor(e,n){super({start(){t.assign(this,{password:e,passwordVerification:n}),ae(this,e)},transform(e,t){const n=this;let s,a;if(n.password){n.password=null;const t=u.getRandomValues(new r(12));t[11]=n.passwordVerification,s=new r(e.length+t.length),s.set(re(n,t),0),a=12}else s=new r(e.length),a=0;s.set(re(n,e),a),t.enqueue(s)},flush(){}})}}function se(e,t){const n=new r(t.length);for(let s=0;s<t.length;s++)n[s]=oe(e)^t[s],ie(e,n[s]);return n}function re(e,t){const n=new r(t.length);for(let s=0;s<t.length;s++)n[s]=oe(e)^t[s],ie(e,t[s]);return n}function ae(e,t){e.keys=[305419896,591751049,878082192],e.crcKey0=new m(e.keys[0]),e.crcKey2=new m(e.keys[2]);for(let n=0;n<t.length;n++)ie(e,t.charCodeAt(n))}function ie(e,t){e.crcKey0.append([t]),e.keys[0]=~e.crcKey0.get(),e.keys[1]=le(e.keys[1]+ce(e.keys[0])),e.keys[1]=le(n.imul(e.keys[1],134775813)+1),e.crcKey2.append([e.keys[1]>>>24]),e.keys[2]=~e.crcKey2.get()}function oe(e){const t=2|e.keys[2];return ce(n.imul(t,1^t)>>>8)}function ce(e){return 255&e}function le(e){return 4294967295&e}class he extends f{constructor(e,t){let n;super({start(){n=new e(t)},transform(e,t){e=n.append(e),t.enqueue(e)},flush(e){const t=n.flush();t&&e.enqueue(t)}})}}const ue="Invalid signature",pe="deflate-raw",fe="undefined",de=typeof w==fe,ge=typeof y==fe;let we=!0,ye=!0;class _e extends f{constructor(e,t,{chunkSize:n},...s){super({},...s);const{compressed:r,encrypted:a,useCompressionStream:i,password:o,passwordVerification:l,encryptionStrength:h,zipCrypto:u,signed:p}=t,f=this;let d,g,y=ke(super.readable);if(a&&!u||!p||([y,d]=y.tee(),d=d.pipeThrough(new b)),r)if(void 0!==i&&!i||de&&!ye)y=be(e,y,n);else try{y=y.pipeThrough(new w(pe))}catch(t){ye=!1,y=be(e,y,n)}a&&(u?y=y.pipeThrough(new ne(o,l)):(g=new X(o,h),y=y.pipeThrough(g))),ve(f,y,(async()=>{let e;a&&!u&&(e=g.signature),a&&!u||!p||(e=await d.getReader().read(),e=new c(e.value.buffer).getUint32(0)),f.signature=e}))}}class me extends f{constructor(e,t,{chunkSize:n},...r){super({},...r);const{zipCrypto:a,encrypted:i,password:o,passwordVerification:l,signed:h,encryptionStrength:u,compressed:p,useCompressionStream:f}=t;let d,g,w=ke(super.readable);if(i&&(a?w=w.pipeThrough(new te(o,l)):(g=new G(o,h,u),w=w.pipeThrough(g))),p)if(void 0!==f&&!f||ge&&!we)w=be(e,w,n);else try{w=w.pipeThrough(new y(pe))}catch(t){we=!1,w=be(e,w,n)}i&&!a||!h||([w,d]=w.tee(),d=d.pipeThrough(new b)),ve(this,w,(async()=>{if(i&&!a&&!g.valid)throw new s(ue);if((!i||a)&&h){const e=await d.getReader().read();if(e!=new c(e.value.buffer).getUint32(0,!1))throw new s(ue)}}))}}function be(e,t,n){return t.pipeThrough(new he(e,{chunkSize:n}))}function ke(e){return e.pipeThrough(new f({transform(e,t){e&&e.length&&t.enqueue(e)}}))}function ve(e,n,s){e.length=0,n=n.pipeThrough(new f({transform(t,n){t&&t.length&&(e.length+=t.length,n.enqueue(t))},flush:s})),t.defineProperty(e,"readable",{get:()=>n})}const Se="deflate",Te="inflate",ze="data";class Ce{constructor(e,t,n,s,r){const{codecType:a}=s;async function i(a){const i=new a(e,s,r);await t.pipeThrough(i).pipeTo(n,{preventClose:!0});const{length:o,signature:c}=i;return{length:o,signature:c}}a.startsWith(Se)?this.run=()=>i(_e):a.startsWith(Te)&&(this.run=()=>i(me))}}const De=new Map;let Re,Ie=0;async function Ve(e){try{const{options:t,scripts:n,config:s}=e,{codecType:r}=t;let a;n&&n.length&&importScripts.apply(void 0,n),self.initCodec&&self.initCodec(),r.startsWith(Se)?a=self.Deflate:r.startsWith(Te)&&(a=self.Inflate);const i={highWaterMark:1,size:()=>s.chunkSize},o=new d({async pull(e){let t=new l(((e,t)=>De.set(Ie,{resolve:e,reject:t})));qe({type:"pull",messageId:Ie}),Ie=(Ie+1)%Number.MAX_SAFE_INTEGER;const{value:n,done:s}=await t;e.enqueue(n),s&&e.close()}},i),c=new g({write(e){qe({type:ze,data:e})}},i);Re=new Ce(a,o,c,t,s),qe({type:"close",result:await Re.run()})}catch(e){const{message:t,stack:n}=e;p({error:{message:t,stack:n}})}}function qe(e){if(e.data){let{data:t}=e;if(t&&t.length)try{t.length!=t.buffer.byteLength&&(t=new r(t)),e.data=t.buffer,p(e,[e.data])}catch(t){p(e)}else p(e)}else p(e)}function Ae(e,n,s){return class{constructor(a){const i=this;t.hasOwn(a,"level")&&void 0===a.level&&delete a.level,i.codec=new e(t.assign({},n,a)),s(i.codec,(e=>{if(i.pendingData){const{pendingData:t}=i;i.pendingData=new r(t.length+e.length),t.set(t,0),t.set(e,t.length)}else i.pendingData=new r(e)}))}append(e){return this.codec.push(e),a(this)}flush(){return this.codec.push(new r,!0),a(this)}};function a(e){if(e.pendingData){const t=e.pendingData;return e.pendingData=null,t}return new r}}addEventListener("message",(async e=>{const t=e.data,{type:n,messageId:s,data:a,done:i}=t;try{if("start"==n&&Ve(t),n==ze){const{resolve:e}=De.get(s);De.delete(s),e({value:new r(a),done:i})}}catch(e){p({error:{message:e.message,stack:e.stack}})}})),self.initCodec=()=>{const{Deflate:e,Inflate:t}=((e,t={},n)=>({Deflate:Ae(e.Deflate,t.deflate,n),Inflate:Ae(e.Inflate,t.inflate,n)}))(pako,{deflate:{raw:!0},inflate:{raw:!0}},((e,t)=>e.onData=t));self.Deflate=e,self.Inflate=t}}();
@@ -7398,14 +7398,13 @@
7398
7398
  if (codecAdapter.pendingData) {
7399
7399
  const { pendingData } = codecAdapter;
7400
7400
  codecAdapter.pendingData = new Uint8Array(pendingData.length + data.length);
7401
- codecAdapter.pendingData.set(pendingData, 0);
7402
- codecAdapter.pendingData.set(data, pendingData.length);
7401
+ pendingData.set(pendingData, 0);
7402
+ pendingData.set(data, pendingData.length);
7403
7403
  } else {
7404
7404
  codecAdapter.pendingData = new Uint8Array(data);
7405
7405
  }
7406
7406
  };
7407
- // eslint-disable-next-line no-prototype-builtins
7408
- if (options.hasOwnProperty("level") && options.level === undefined) {
7407
+ if (Object.hasOwn(options, "level") && options.level === undefined) {
7409
7408
  delete options.level;
7410
7409
  }
7411
7410
  codecAdapter.codec = new constructor(Object.assign({}, constructorOptions, options));
@@ -7491,12 +7490,13 @@
7491
7490
 
7492
7491
  get readable() {
7493
7492
  const reader = this;
7493
+ const { chunkSize = DEFAULT_CHUNK_SIZE } = reader;
7494
7494
  const readable = new ReadableStream({
7495
7495
  start() {
7496
7496
  this.chunkOffset = 0;
7497
7497
  },
7498
7498
  async pull(controller) {
7499
- const { offset = 0, chunkSize = DEFAULT_CHUNK_SIZE, size } = readable;
7499
+ const { offset = 0, size } = readable;
7500
7500
  const { chunkOffset } = this;
7501
7501
  controller.enqueue(await reader.readUint8Array(offset + chunkOffset, Math.min(chunkSize, size() - chunkOffset)));
7502
7502
  if (chunkOffset + chunkSize > size()) {
@@ -7856,7 +7856,7 @@
7856
7856
  if (response.status < 400) {
7857
7857
  return response;
7858
7858
  } else {
7859
- throw new Error(ERR_HTTP_STATUS + (response.statusText || response.status));
7859
+ throw response.status == 416 ? new Error(ERR_HTTP_RANGE) : new Error(ERR_HTTP_STATUS + (response.statusText || response.status));
7860
7860
  }
7861
7861
  }
7862
7862
 
@@ -7877,7 +7877,7 @@
7877
7877
  headers: new Map(headers)
7878
7878
  });
7879
7879
  } else {
7880
- reject(new Error(ERR_HTTP_STATUS + (request.statusText || request.status)));
7880
+ reject(request.status == 416 ? new Error(ERR_HTTP_RANGE) : new Error(ERR_HTTP_STATUS + (request.statusText || request.status)));
7881
7881
  }
7882
7882
  }, false);
7883
7883
  request.addEventListener("error", event => reject(event.detail.error), false);
@@ -8214,6 +8214,7 @@
8214
8214
  if (!reader.initialized) {
8215
8215
  await reader.init();
8216
8216
  }
8217
+ reader.chunkSize = getChunkSize(config);
8217
8218
  if (reader.size < END_OF_CENTRAL_DIR_LENGTH) {
8218
8219
  throw new Error(ERR_BAD_FORMAT);
8219
8220
  }
@@ -8330,9 +8331,9 @@
8330
8331
  const extractPrependedData = getOptionValue$1(zipReader, options, "extractPrependedData");
8331
8332
  const extractAppendedData = getOptionValue$1(zipReader, options, "extractAppendedData");
8332
8333
  if (extractPrependedData) {
8333
- zipReader.prependedData = await readUint8Array(reader, 0, startOffset);
8334
+ zipReader.prependedData = startOffset > 0 ? await readUint8Array(reader, 0, startOffset) : new Uint8Array();
8334
8335
  }
8335
- zipReader.comment = await readUint8Array(reader, commentOffset + END_OF_CENTRAL_DIR_LENGTH, commentLength);
8336
+ zipReader.comment = commentLength ? await readUint8Array(reader, commentOffset + END_OF_CENTRAL_DIR_LENGTH, commentLength) : new Uint8Array();
8336
8337
  if (extractAppendedData) {
8337
8338
  zipReader.appendedData = appendedDataOffset < reader.size ? await readUint8Array(reader, appendedDataOffset, reader.size - appendedDataOffset) : new Uint8Array();
8338
8339
  }
@@ -8410,7 +8411,6 @@
8410
8411
  const readable = reader.readable;
8411
8412
  readable.offset = dataOffset;
8412
8413
  readable.size = size;
8413
- readable.chunkSize = getChunkSize(config);
8414
8414
  const { writable } = writer;
8415
8415
  const signal = getOptionValue$1(zipEntry, options, "signal");
8416
8416
  if (writer.init && !writer.initialized) {
@@ -8761,17 +8761,22 @@
8761
8761
 
8762
8762
  async add(name = "", reader, options = {}) {
8763
8763
  const zipWriter = this;
8764
- if (workers < zipWriter.config.maxWorkers) {
8764
+ const {
8765
+ pendingAddFileCalls,
8766
+ pendingEntries,
8767
+ config
8768
+ } = zipWriter;
8769
+ if (workers < config.maxWorkers) {
8765
8770
  workers++;
8766
8771
  let promiseAddFile;
8767
8772
  try {
8768
8773
  promiseAddFile = addFile(zipWriter, name, reader, options);
8769
- this.pendingAddFileCalls.add(promiseAddFile);
8774
+ pendingAddFileCalls.add(promiseAddFile);
8770
8775
  return await promiseAddFile;
8771
8776
  } finally {
8772
- this.pendingAddFileCalls.delete(promiseAddFile);
8777
+ pendingAddFileCalls.delete(promiseAddFile);
8773
8778
  workers--;
8774
- const pendingEntry = zipWriter.pendingEntries.shift();
8779
+ const pendingEntry = pendingEntries.shift();
8775
8780
  if (pendingEntry) {
8776
8781
  zipWriter.add(pendingEntry.name, pendingEntry.reader, pendingEntry.options)
8777
8782
  .then(pendingEntry.resolve)
@@ -8779,7 +8784,7 @@
8779
8784
  }
8780
8785
  }
8781
8786
  } else {
8782
- return new Promise((resolve, reject) => zipWriter.pendingEntries.push({ name, reader, options, resolve, reject }));
8787
+ return new Promise((resolve, reject) => pendingEntries.push({ name, reader, options, resolve, reject }));
8783
8788
  }
8784
8789
  }
8785
8790
 
@@ -8939,22 +8944,31 @@
8939
8944
  }
8940
8945
 
8941
8946
  async function getFileEntry(zipWriter, name, reader, options) {
8942
- const { files, writer } = zipWriter;
8947
+ const {
8948
+ files,
8949
+ writer
8950
+ } = zipWriter;
8951
+ const {
8952
+ keepOrder,
8953
+ dataDescriptor,
8954
+ zipCrypto,
8955
+ signal
8956
+ } = options;
8943
8957
  const previousFileEntry = Array.from(files.values()).pop();
8944
8958
  let fileEntry = {};
8945
8959
  let bufferedWrite;
8946
8960
  let releaseLockWriter;
8947
- let resolveLockCurrentFileEntry;
8948
- let writingBufferedData;
8961
+ let releaseLockCurrentFileEntry;
8962
+ let bufferedDataWritten;
8963
+ let fileWriter;
8949
8964
  files.set(name, fileEntry);
8950
8965
  try {
8951
8966
  let lockPreviousFileEntry;
8952
- let fileWriter;
8953
- if (options.keepOrder) {
8967
+ if (keepOrder) {
8954
8968
  lockPreviousFileEntry = previousFileEntry && previousFileEntry.lock;
8969
+ requestLockCurrentFileEntry();
8955
8970
  }
8956
- fileEntry.lock = new Promise(resolve => resolveLockCurrentFileEntry = resolve);
8957
- if (options.bufferedWrite || zipWriter.lockWriter || !options.dataDescriptor) {
8971
+ if (options.bufferedWrite || zipWriter.lockWriter || !dataDescriptor) {
8958
8972
  fileWriter = new BlobWriter();
8959
8973
  fileWriter.init();
8960
8974
  bufferedWrite = true;
@@ -8965,20 +8979,20 @@
8965
8979
  }
8966
8980
  fileWriter = writer;
8967
8981
  }
8968
- fileEntry = await createFileEntry(reader, fileWriter.writable, zipWriter.config, options);
8982
+ fileEntry = await createFileEntry(reader, fileEntry, fileWriter.writable, zipWriter.config, options);
8969
8983
  files.set(name, fileEntry);
8970
8984
  fileEntry.filename = name;
8971
8985
  if (bufferedWrite) {
8972
8986
  let blob = fileWriter.getData();
8973
8987
  await lockPreviousFileEntry;
8974
- await lockWriter();
8975
- writingBufferedData = true;
8988
+ await requestLockWriter();
8989
+ bufferedDataWritten = true;
8976
8990
  const { writable } = writer;
8977
- if (!options.dataDescriptor) {
8991
+ if (!dataDescriptor) {
8978
8992
  const headerLength = 26;
8979
8993
  const arrayBuffer = await sliceAsArrayBuffer(blob, 0, headerLength);
8980
8994
  const arrayBufferView = new DataView(arrayBuffer);
8981
- if (!fileEntry.encrypted || options.zipCrypto) {
8995
+ if (!fileEntry.encrypted || zipCrypto) {
8982
8996
  setUint32(arrayBufferView, 14, fileEntry.signature);
8983
8997
  }
8984
8998
  if (fileEntry.zip64) {
@@ -8991,8 +9005,8 @@
8991
9005
  await writeUint8Array(writable, new Uint8Array(arrayBuffer));
8992
9006
  blob = blob.slice(headerLength);
8993
9007
  }
8994
- await blob.stream().pipeTo(writable, { preventClose: true });
8995
- writingBufferedData = false;
9008
+ await blob.stream().pipeTo(writable, { preventClose: true, signal });
9009
+ bufferedDataWritten = false;
8996
9010
  }
8997
9011
  fileEntry.offset = zipWriter.offset;
8998
9012
  if (fileEntry.zip64) {
@@ -9004,32 +9018,37 @@
9004
9018
  zipWriter.offset += fileEntry.length;
9005
9019
  return fileEntry;
9006
9020
  } catch (error) {
9007
- if ((bufferedWrite && writingBufferedData) || (!bufferedWrite && fileEntry.dataWritten)) {
9021
+ if ((bufferedWrite && bufferedDataWritten) || (!bufferedWrite && fileEntry.dataWritten)) {
9008
9022
  error.corruptedEntry = zipWriter.hasCorruptedEntries = true;
9009
- if (fileEntry.uncompressedSize) {
9010
- zipWriter.offset += fileEntry.uncompressedSize;
9011
- }
9023
+ zipWriter.offset += fileWriter.size;
9012
9024
  }
9013
9025
  files.delete(name);
9014
9026
  throw error;
9015
9027
  } finally {
9016
- resolveLockCurrentFileEntry();
9028
+ if (releaseLockCurrentFileEntry) {
9029
+ releaseLockCurrentFileEntry();
9030
+ }
9017
9031
  if (releaseLockWriter) {
9018
9032
  releaseLockWriter();
9019
9033
  }
9020
9034
  }
9021
9035
 
9022
- async function lockWriter() {
9023
- if (zipWriter.lockWriter) {
9024
- await zipWriter.lockWriter.then(() => delete zipWriter.lockWriter);
9025
- await lockWriter();
9036
+ function requestLockCurrentFileEntry() {
9037
+ fileEntry.lock = new Promise(resolve => releaseLockCurrentFileEntry = resolve);
9038
+ }
9039
+
9040
+ async function requestLockWriter() {
9041
+ const { lockWriter } = zipWriter;
9042
+ if (lockWriter) {
9043
+ await lockWriter.then(() => delete zipWriter.lockWriter);
9044
+ return requestLockWriter();
9026
9045
  } else {
9027
9046
  zipWriter.lockWriter = new Promise(resolve => releaseLockWriter = resolve);
9028
9047
  }
9029
9048
  }
9030
9049
  }
9031
9050
 
9032
- async function createFileEntry(reader, writable, config, options) {
9051
+ async function createFileEntry(reader, pendingFileEntry, writable, config, options) {
9033
9052
  const {
9034
9053
  rawFilename,
9035
9054
  lastAccessDate,
@@ -9164,7 +9183,7 @@
9164
9183
  const rawLastModDate = dateArray[0];
9165
9184
  setUint32(headerView, 6, rawLastModDate);
9166
9185
  setUint16(headerView, 22, rawFilename.length);
9167
- const extraFieldLength = rawExtraFieldAES.length + rawExtraFieldExtendedTimestamp.length + rawExtraFieldNTFS.length + fileEntry.rawExtraField.length;
9186
+ const extraFieldLength = rawExtraFieldAES.length + rawExtraFieldExtendedTimestamp.length + rawExtraFieldNTFS.length + rawExtraField.length;
9168
9187
  setUint16(headerView, 24, extraFieldLength);
9169
9188
  const localHeaderArray = new Uint8Array(30 + rawFilename.length + extraFieldLength);
9170
9189
  const localHeaderView = getDataView(localHeaderArray);
@@ -9174,16 +9193,16 @@
9174
9193
  arraySet(localHeaderArray, rawExtraFieldAES, 30 + rawFilename.length);
9175
9194
  arraySet(localHeaderArray, rawExtraFieldExtendedTimestamp, 30 + rawFilename.length + rawExtraFieldAES.length);
9176
9195
  arraySet(localHeaderArray, rawExtraFieldNTFS, 30 + rawFilename.length + rawExtraFieldAES.length + rawExtraFieldExtendedTimestamp.length);
9177
- arraySet(localHeaderArray, fileEntry.rawExtraField, 30 + rawFilename.length + rawExtraFieldAES.length + rawExtraFieldExtendedTimestamp.length + rawExtraFieldNTFS.length);
9196
+ arraySet(localHeaderArray, rawExtraField, 30 + rawFilename.length + rawExtraFieldAES.length + rawExtraFieldExtendedTimestamp.length + rawExtraFieldNTFS.length);
9178
9197
  let result;
9179
9198
  let compressedSize = 0;
9180
9199
  if (reader) {
9200
+ reader.chunkSize = getChunkSize(config);
9181
9201
  await writeUint8Array(writable, localHeaderArray);
9182
- fileEntry.dataWritten = true;
9202
+ fileEntry.dataWritten = pendingFileEntry.dataWritten = true;
9183
9203
  const size = () => reader.size;
9184
9204
  const readable = reader.readable;
9185
9205
  readable.size = size;
9186
- readable.chunkSize = getChunkSize(config);
9187
9206
  const workerOptions = {
9188
9207
  options: {
9189
9208
  codecType: CODEC_DEFLATE,
@@ -9207,7 +9226,7 @@
9207
9226
  compressedSize = result.length;
9208
9227
  } else {
9209
9228
  await writeUint8Array(writable, localHeaderArray);
9210
- fileEntry.dataWritten = true;
9229
+ fileEntry.dataWritten = pendingFileEntry.dataWritten = true;
9211
9230
  }
9212
9231
  let dataDescriptorArray = new Uint8Array();
9213
9232
  let dataDescriptorView, dataDescriptorOffset = 0;
@@ -9253,7 +9272,15 @@
9253
9272
  await writeUint8Array(writable, dataDescriptorArray);
9254
9273
  }
9255
9274
  const length = localHeaderArray.length + compressedSize + dataDescriptorArray.length;
9256
- Object.assign(fileEntry, { compressedSize, lastModDate, rawLastModDate, creationDate, lastAccessDate, encrypted, length });
9275
+ Object.assign(fileEntry, {
9276
+ compressedSize,
9277
+ lastModDate,
9278
+ rawLastModDate,
9279
+ creationDate,
9280
+ lastAccessDate,
9281
+ encrypted,
9282
+ length
9283
+ });
9257
9284
  return fileEntry;
9258
9285
  }
9259
9286